字符串引用是否重复?

Fab*_*cio 5 c string optimization gcc

可能重复:
C/C++:优化指向字符串常量的指针

假设您"example"在很多地方定义了一个字符串

// module1.h
char *x = "example";
// module2.h
char *a[] = { "text", "example" };
// module3.c
printf("example");
//etc.
Run Code Online (Sandbox Code Playgroud)

这些数据是否会重复,或者编译器只会对它进行一次引用?

oua*_*uah 8

它取决于实现.但这就是字符串文字的不可变属性的精神.

引用字符串文字的C99基本原理:

"字符串文字不需要是可修改的.此规范允许实现共享具有相同文本的字符串副本,将字符串文字放在只读内存中,并执行某些优化"