我看到在带有 GCC 的 Linux 系统上,字符串文字的地址似乎比其他变量的地址要小得多。例如,下面的代码会生成下面显示的 o/p。
#include <stdio.h>
int main()
{
char *str1 = "Mesg 1";
char *str2 = "Mesg 2";
char str3[] = "Mesg 3";
char str4[] = "Mesg 4";
printf("str1 = %p\n", (void *) str1);
printf("str2 = %p\n", (void *) str2);
printf("&str3 = %p\n", (void *) str3);
printf("&str4 = %p\n", (void *) str4);
return 0;
}
输出:
str1 = 0x400668
str2 = 0x40066f
&str3 = 0x7fffcc990b10
&str4 = 0x7fffcc990b00
是否有单独的常量地址空间用于此类用途?