void foo(const char* s) { }
foo("bar");
- 内存在哪里
bar
释放? - 在函数参数中使用匿名字符串最舒适且无内存泄漏的做法是什么?(我知道不应该有魔法字符串,只是好奇。)
void foo(const char* s) { }
foo("bar");
bar
释放?在您的示例中,参数是一个字符串文字,它具有静态生命周期,并且永远不会被删除。
“bar”在数据部分中定义,地址将在您拥有的所有地方替换它。将使用指向该地址的指针调用 foo 函数。
bar 的内存是在编译时分配的。因此,它永远不必被释放。
c++ 二进制文件中有不同的部分。一些示例是文本(存储代码的位置)、堆栈和堆。还有一段只读静态内存。我相信这是存储字符串的地方。
由于字符串不在堆上,因此不需要释放它。