当我运行此代码时,是否从内存中删除了变量msg及其值“Hello”?
Message *msg;
msg->value = "Hello";
msg = NULL;
由于 诉
答案 0 :(得分:1)
在C和C ++中,将指针设置为NULL
(或任何其他值,就此而言)不会自动释放指针先前指向的空间。在重新分配指针之前必须调用free(msg)
,以避免泄漏内存(除非内存仍然通过其他指针变量使用)。
但是,您的代码首先从未向msg
分配任何内容,因此没有任何泄漏。赋值msg->value = "Hello";
取消引用了未经初始化的指针,该指针具有未定义的行为。