我是否必须从每个初始化的字符串中释放内存?

时间:2011-09-30 20:32:36

标签: c string pointers

// loads a file into memory
void load_file()
{
   char *data = "This is so data";
   printf("function: %s\n", data);

}

以上代码会泄漏内存吗?我有免费电话(数据)吗?为什么或为什么不呢?

2 个答案:

答案 0 :(得分:2)

它无法泄漏,因为您没有动态分配它。 data是字符串文字,而不是动态分配的字符数组。

答案 1 :(得分:1)

你没有在那里分配任何内存,所以没有内存泄露。您只是将指针复制到可执行映像中的现有字符串,而不是字符串本身。

因此,data的类型应为const char*,以防止意外更改data指向的字符串。

data本身是一个指针,在堆栈上分配,就像i中的int i = 5;一样。这种隐式分配也会自动解除分配。