我有一个关于内存分配顺序的问题。在下面的代码中,我在循环中分配了 4 个字符串。但是当我打印地址时,它们似乎没有一个接一个地分配......我做错了什么还是操作系统为防止可能的缓冲区溢出而实施的某种防御机制?(我使用 Windows Vista)。
谢谢你。
char **stringArr;
int size=4, i;
stringArr=(char**)malloc(size*sizeof(char*));
for (i=0; i<size; i++)
stringArr[i]=(char*)malloc(10*sizeof(char));
strcpy(stringArr[0], "abcdefgh");
strcpy(stringArr[1], "good-luck");
strcpy(stringArr[2], "mully");
strcpy(stringArr[3], "stam");
for (i=0; i<size; i++) {
printf("%s\n", stringArr[i]);
printf("%d %u\n\n", &(stringArr[i]), stringArr[i]);
}
输出:
abcdefgh 9650064 9650128
祝你好运 9650068 9638624
穆利 9650072 9638680
斯塔姆 9650076 9638736