// loads a file into memory
void load_file()
{
char *data = "This is so data";
printf("function: %s\n", data);
}
以上代码会泄漏内存吗?我有免费电话(数据)吗?为什么或为什么不呢?
答案 0 :(得分:2)
它无法泄漏,因为您没有动态分配它。 data
是字符串文字,而不是动态分配的字符数组。
答案 1 :(得分:1)
你没有在那里分配任何内存,所以没有内存泄露。您只是将指针复制到可执行映像中的现有字符串,而不是字符串本身。
因此,data
的类型应为const char*
,以防止意外更改data
指向的字符串。
data
本身是一个指针,在堆栈上分配,就像i
中的int i = 5;
一样。这种隐式分配也会自动解除分配。