【发布时间】:2015-02-28 16:48:52
【问题描述】:
如果我使用
const char * str = "Hello";
运行时不需要内存分配/释放
如果我使用
const std::string str = "Hello";
是否会在字符串类中通过 new/malloc 进行分配?我可以在汇编中找到它,但我不擅长阅读它。
如果答案是“是的,会有 malloc/new”,为什么?如果我需要编辑编辑字符串,为什么只能传递到 std::string 内的内部 const char 指针并进行实际内存分配?
【问题讨论】:
-
这不取决于你的实现吗?
-
请注意,这两个代码示例是不等价的,因为第二个允许修改字符串。想想这些的含义:
char str[] = "Hello";或const std::string str = "Hello";甚至static const std::string str = "Hello"。 -
@NeilKirk 你是对的,我已经编辑了答案
标签: c++ string memory-management