我尝试了以下内容:
int main()
{
char* a = "sdwgfwegwe wefwef wefwefwefwysadqaw";
char* b = "acd";
char* c = "sdwgfwegwe wefwef wefwefwefwysadqaw";
char* d;
d = "acd";
printf("%p\n", a);
printf("%p\n", b);
printf("%p\n", c);
printf("%p\n", d);
getchar();
return 0;
}
并且在输出(控制台)上a和c具有相同的地址以及b和d。 我想为每个角色实现一个查找表。 这样做有什么好处/情况吗? 编译器做了什么(上面的例子,而不是查找表:))?检查此字符串是否已被使用,如果没有,则为给定字符串保留内存 - >把它归还给? 任何人有一些书籍提示或链接,深入解释内部内存分配/管理,即使它是编译器依赖的? 提前谢谢。
答案 0 :(得分:7)
答案 1 :(得分:2)
C ++答案(§2.14.5):
是否所有字符串文字都是不同的(即存储在非重叠对象中)是实现定义的。
完全由实现决定如何创建字符串文字对象。一种实现可以与另一种实现不同。您似乎将相同的字符串文字视为同一个对象。