Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我运行此代码时,变量 msg 及其值“Hello”是否从内存中删除?
Message *msg; msg->value = "Hello"; msg = NULL;
谢谢 V。
在 C 和 C++ 中,设置指向NULL(或任何其他值)的指针不会自动释放指针先前指向的空间。您必须free(msg)在重新分配指针之前调用,以避免内存泄漏(除非内存仍在通过其他指针变量使用)。
NULL
free(msg)
但是,您的代码一开始就没有分配任何东西msg,所以没有什么可以泄漏的。该赋值msg->value = "Hello";取消引用了一个未初始化的指针,该指针具有未定义的行为。
msg
msg->value = "Hello";