在下面的程序中,据我所知,一旦我们分配了一些内存,那么如果我们正在从 chaging 地址
ptr to ptr++
,那么当我们free
使用ptr
ie调用时free(ptr)
。然后程序应该崩溃。但在这个程序中工作正常。这个怎么运作?我在 Windows XP 中使用 Code::Bocks。请帮我。
int main()
{
int *ptr;
ptr = malloc(1);
*ptr = 6;
printf("The value at *ptr = %d \n", *ptr);
ptr++; //Now ptr is address has been changed
free(ptr); // Program should crash here
ptr = NULL;
/* *ptr = 5;*/ // This statement is crashing
return 0;
}