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