1

我有一个声明为 const char * 的变量。我已经使用 malloc() 为其分配了内存。使用它后,我想使用 free() 释放该内存。但我无法做到这一点,它给了我“尝试写入受保护的内存”的错误。如何释放分配的内存?

谢谢,拉克什。

4

2 回答 2

4

如果您收到该错误,那么您做错了什么,您需要发布代码,以便我们弄清楚它是什么。对于它的价值,您可以释放 aconst char*如以下代码所示,它可以完美地编译和执行:

#include <cstdlib>
int main (void) {
    const char *x = (const char*) malloc (100);
    free ((void*) x);
    return 0;
}
于 2010-06-28T07:34:35.093 回答
1

使用后

让我猜猜,这是你做的吗?

const char* p = malloc(12);
p = "hello world";           // problem: memory leak
free(p);                     // problem: trying to free static memory

您应该用或类似的东西替换第二行以strcpy(p, "hello world");摆脱问题。但是由于您没有提供任何代码,因此我不会再深入研究这个问题。

于 2010-06-28T11:02:01.210 回答