有关数组越界的问题

sunyuqian 2010-04-09 07:58:41
大家好,对这个程序有点疑问,用/**/标出,请高手解决

#include <stdio.h>

void test(int a[]);

int main()
{
int a[10];
a[15] = 0;
printf("%d\n",a[15]);
/*就是这行,在main函数里只定义了一个10个元素的数组,,为什么a[15]也能运行呢?而且赋值都是对的
形参的数组大小不确定,这个知道,但为什么在main函数里,也能这样呢?
定义以后,应该分配内存,只为a[0]-a[9]分配,a[15]没有分配怎么可以用?*/
test(a);
printf("%d\n",a[15]);
return 0;
}

void test(int a[])
{
a[15] = 1;
printf("%d\n",a[15]);
}
...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
白云飘飘飘 2010-04-09
  • 打赏
  • 举报
回复
函数中的数组是在堆栈中分配的,堆栈是系统为程序分配好的可用内存,所以数组越界后不会性发生访问违例的错误。
jbz001 2010-04-09
  • 打赏
  • 举报
回复
数组是无法自己判断大小的,那个地址也有值。
sunyuqian 2010-04-09
  • 打赏
  • 举报
回复
谢谢了
huanmie_09 2010-04-09
  • 打赏
  • 举报
回复
数组越界,可能会覆盖栈上的其他变量值,可能会造成一些无法预知的bug
kingteng 2010-04-09
  • 打赏
  • 举报
回复
c语言把保证数组不越界的保证交给程序员,正好你这里访问的地址允许写入吧
cy330206 2010-04-09
  • 打赏
  • 举报
回复
c不检查的,,如果检查的话比较费时间
所以规定不检查
柯本 2010-04-09
  • 打赏
  • 举报
回复
数组下标越界会产生"不可预见"错误,能运行也是正常的.不是每次都能运行,不是每个环境都能运行
处处留心 2010-04-09
  • 打赏
  • 举报
回复
这是一个BUG,如果没有对a[15]重新赋值,你只要不调用他的值就不会出错。相当于a[15]已经经过了初始化,所以你下边的赋值操作才可以运行
fox000002 2010-04-09
  • 打赏
  • 举报
回复
c 不检查数组越界

对于非关键位置,越界访问并不会引起程序崩溃
BoT-SORT是发表于2022年的先进的多目标跟踪算法,它结合了运动和外观信息、相机运动补偿和更准确的卡尔曼滤波状态向量,并把这些改进集成到ByteTrack,从而在MOTA、IDF1和HOTA性能指标上超过了ByteTrack,增强了目标跟踪的鲁棒性,比较适用于存在相机运动的场景。YOLOv8代码中已集成了BoT-SORT。本课程使用YOLOv8和BoT-SORT对视频中的行人、车辆做多目标跟踪计数与越界识别,开展YOLOv8目标检测和BoT-SORT多目标跟踪强强联手的应用。课程分别在Windows和Ubuntu系统上做项目演示,并对BoT-SORT原理和代码做详细解读(使用PyCharm单步调试讲解)。课程包括:基础篇、实践篇、原理篇和代码解析篇。Ÿ  基础篇包括多目标跟踪任务介绍、常用数据集和评估指标;Ÿ  实践篇包括Win10和Ubuntu系统上的YOLOv8+BoT-SORT的多目标跟踪计数与越界识别具体的实践操作步骤演示;Ÿ  原理篇中讲解了马氏距离、匈牙利算法、卡尔曼滤波器、SORT、DeepSORT和BoT-SORT多目标跟踪算法的原理,并解读了BoT-SORT论文;Ÿ  代码解析篇中使用PyCharm单步调试对BoT-SORT的代码逐个文件进行讲解。课程提供代码解析文档。相关课程:《YOLOv8+ByteTrack多目标跟踪(行人车辆计数与越界识别)》https://edu.csdn.net/course/detail/38901《YOLOv8+DeepSORT多目标跟踪(行人车辆计数与越界识别)》 https://edu.csdn.net/course/detail/38870《YOLOv5+DeepSORT多目标跟踪与计数精讲》https://edu.csdn.net/course/detail/32669 

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧