小编Cod*_*ity的帖子

free将不会删除分配给指针的内存(int数组),使用免费的两次工作,为什么?

这是出于好奇,我试图在以前的问题上找到我怀疑的答案,但他们似乎没有答案.所以问这里,我刚写了一个代码,我试图将内存分配给一个int指针(填充一个数组)并将int值扫描给它.完成数组后,我想删除分配给指针的数据/内存.虽然我的代码工作正常,一切,为什么我仍然能看到int数组甚至是免费的后内值荷兰国际集团的指针.然而,如果我使用两次免费它会引发错误(这是在单次使用免费后预期的).这不是一个奇怪的行为吗?我在我的mac上尝试使用Xcode也在codechef,同样的行为,为什么?

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]);        
}
Run Code Online (Sandbox Code Playgroud)

上面的代码打印num []内的值,理想情况下它不应该.

c arrays pointers memory-management

4
推荐指数
2
解决办法
1142
查看次数

标签 统计

arrays ×1

c ×1

memory-management ×1

pointers ×1