如果程序不能得到分段错误,可能是由于以下原因之一:
#include
#include
int main() {
int* p = (int*) malloc(sizeof(int));
*p = 123;
printf("p = %d\n", *p);
free(p);
printf("p = %d\n", *p); // this line causes undefined behavior
return 0;
}
在这个例子中,程序会分配一些内存用于整数,并在此内存中存储某些数据。然后,p指针被释放并用于尝试访问释放的内存地址。这导致undefined behavior (未定义的行为),程序可能崩溃或打印没有意义的值。为了避免这种情况,请在释放指针后不要再使用它。