在C ++中释放const char *变量的内存

时间:2010-06-28 07:16:37

标签: c++

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

谢谢, 勒凯什。

2 个答案:

答案 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");或类似的东西替换第二行以解决问题。但由于你没有提供任何代码,我不打算深入研究这个问题。