我有一个声明为const char *的变量。我使用malloc()为它分配了内存。使用它之后,我想使用free()释放内存。但我无法做到这一点,它给了我“尝试写入受保护的内存”的错误。如何释放分配的内存?
谢谢, 勒凯什。
答案 0 :(得分:3)
如果你收到了这个错误,那么你做错了,你需要发布代码,这样我们才能弄明白它是什么。对于它的价值,你可以释放const char*
,如下面的代码所示,它编译和执行完美:
#include <cstdlib>
int main (void) {
const char *x = (const char*) malloc (100);
free ((void*) x);
return 0;
}
答案 1 :(得分:1)
使用后
让我猜一下,这就是你做的吗?
const char* p = malloc(12);
p = "hello world"; // problem: memory leak
free(p); // problem: trying to free static memory
您应该用strcpy(p, "hello world");
或类似的东西替换第二行以解决问题。但由于你没有提供任何代码,我不打算深入研究这个问题。