【发布时间】:2016-06-17 08:01:28
【问题描述】:
所以问题是,原始开发人员如何防止用户/新开发人员尝试访问 空闲 的内存元素的情况。
int *num=(int *)malloc(n*sizeof(int));
int i;
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
for(i=0;i<n-1;i++){
temp = some_function(x);
}
free(num);
for(i=0;i<n;i++)
{
printf("\nnum[%d]= %d\n",i,num[i]);
}
P.S.:上面的代码有效,实际上打印出数组中的数据。这不是我们的意图。 [编辑] 对不起,如果我不够清楚。有人建议将此作为一个单独的问题提出,我想为什么不呢。这是original post
【问题讨论】:
-
上面的代码有效,实际上打印出数组中的数据。..欢迎来到 UB。
-
代码在一个特定平台上工作,可能在调试版本中。在不同的系统(或发布版本)上运行这个可能会崩溃。这取决于内存分配器。一些分配器在释放后会归零(或将所有字节设置为其他值),因此您会得到不同的结果。
-
请说明您的具体问题或添加其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。请参阅“如何提问”页面以获得澄清此问题的帮助。
-
不要用锤子敲打拇指来防止拇指受伤。通过不编写错误代码来防止未定义的行为。
标签: c memory-management heap-memory