Pointers 当我将指针设置为NULL时,它的内存是否已释放?

Pointers 当我将指针设置为NULL时,它的内存是否已释放?,pointers,memory,memory-leaks,Pointers,Memory,Memory Leaks,当我运行此代码时,是否从内存中删除了变量msg及其值“Hello” Message *msg; msg->value = "Hello"; msg = NULL; 谢谢 在C和C++中,设置指针为NUL>代码>(或其他任何值),并不能自动释放指针先前指向的空间。在重新分配指针之前,必须调用free(msg),以避免内存泄漏(除非通过其他指针变量仍在使用内存) 但是,您的代码一开始从未将任何内容分配给msg,因此没有任何泄漏。分配msg->value=“Hello”取消了一个未定义的指针,

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

Message *msg;
msg->value = "Hello";
msg = NULL;
谢谢
在C和C++中,设置指针为NUL>代码>(或其他任何值),并不能自动释放指针先前指向的空间。在重新分配指针之前,必须调用
free(msg)
,以避免内存泄漏(除非通过其他指针变量仍在使用内存)


但是,您的代码一开始从未将任何内容分配给
msg
,因此没有任何泄漏。分配
msg->value=“Hello”取消了一个未定义的指针,它具有未定义的行为。在C和C++中,

< P>,设置指针为<代码> null <代码>(或任何其他值),并不能自动释放指针先前指向的空间。在重新分配指针之前,必须调用
free(msg)
,以避免内存泄漏(除非通过其他指针变量仍在使用内存)


但是,您的代码一开始从未将任何内容分配给
msg
,因此没有任何泄漏。分配
msg->value=“Hello”取消了一个未定义的指针,它具有未定义的行为。

这看起来像C++或C,但我不确定100%。这种行为取决于语言。我没有看到任何内存分配给“msg”。所以,运行这个程序可能会崩溃。这看起来像C++或C,但我不确定100%。这种行为取决于语言。我没有看到任何内存分配给“msg”。所以,运行这个程序可能会崩溃。