1

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

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

谢谢 V。

4

1 回答 1

1

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

但是,您的代码一开始就没有分配任何东西msg,所以没有什么可以泄漏的。该赋值msg->value = "Hello";取消引用了一个未初始化的指针,该指针具有未定义的行为。

于 2013-07-30T03:42:34.880 回答