【问题标题】:Is the memory of the pointer freed when I set it to NULL?当我将指针设置为 NULL 时是否释放了指针的内存?
【发布时间】:2013-07-30 01:15:12
【问题描述】:

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

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

谢谢 五、

【问题讨论】:

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

标签: pointers memory memory-leaks


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2016-03-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2020-03-22
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多