相关疑难解决方法(0)

C中的内存分配

我有一个关于内存分配顺序的问题.在下面的代码中,我在循环中分配4个字符串.但是当我打印地址时,它们似乎并没有一个接一个地分配......我做错了什么,或者是OS实施的某种防御机制,以防止可能的缓冲区溢出?(我使用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]);
 }
Run Code Online (Sandbox Code Playgroud)

输出:

abcdefgh 9650064 9650128

祝你好运9650068 9638624

mully 9650072 9638680

stam 9650076 9638736

c malloc buffer-overflow windows-vista

6
推荐指数
1
解决办法
702
查看次数

标签 统计

buffer-overflow ×1

c ×1

malloc ×1

windows-vista ×1