当我将其设置为NULL时,指针的内存是否被释放?

时间:2013-07-30 03:20:27

标签: pointers memory memory-leaks

当我运行此代码时,是否从内存中删除了变量msg及其值“Hello”?

Message *msg;
msg->value = "Hello";
msg = NULL;

由于 诉

1 个答案:

答案 0 :(得分:1)

在C和C ++中,将指针设置为NULL(或任何其他值,就此而言)不会自动释放指针先前指向的空间。在重新分配指针之前必须调用free(msg),以避免泄漏内存(除非内存仍然通过其他指针变量使用)。

但是,您的代码首先从未向msg分配任何内容,因此没有任何泄漏。赋值msg->value = "Hello";取消引用了未经初始化的指针,该指针具有未定义的行为。