1
当我运行这段代码时,是否将变量msg及其值“Hello”从内存中删除?当我将它设置为NULL时,指针的内存是否已释放?
Message *msg;
msg->value = "Hello";
msg = NULL;
由于 V.
当我运行这段代码时,是否将变量msg及其值“Hello”从内存中删除?当我将它设置为NULL时,指针的内存是否已释放?
Message *msg;
msg->value = "Hello";
msg = NULL;
由于 V.
在C和C++,设置一个指向NULL
(或任何其他值,对于这个问题)不会自动释放指针先前指向的空间。在重新分配指针之前,您必须调用free(msg)
,以避免内存泄漏(除非内存仍然通过其他指针变量使用)。
然而,你的代码从来没有分配任何东西到msg
首先,所以没有什么可泄漏的。赋值msg->value = "Hello";
取消了一个未初始化的指针,该指针具有未定义的行为。
这看起来像C++或C,但我不是100%确定。这种行为取决于语言。 – BergQuester
我没有看到任何内存分配到“味精”。所以,运行这个程序可能会崩溃。 –