|
发表于 2007-3-17 15:39:17
|
显示全部楼层
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 int main()
5 {
6 char *p=malloc(10*sizeof(char));
7 char a[]="fkadf\0";
8 p=a; //错误用法,p指向一块开辟的空间,然后把指针又指向了别的地方,空间白白开辟?
9 char b[]="hjk\0";
10 printf("%s\n",a);
11 strcat(b,a);
12 printf("%s\n",p);
13 free(p); //这时候释放的不是原拉开辟的空间
14 printf("%s\n",b);
15
16 return 0;
17 }
18
19 输出adf的原因是:内存布局 ,|h|j|k|\0|\0|f|k|a|d|f|\0|\0||
20 strcat 后:|h|j|k|f|k|a|d|f|\0|\0|\0|\0|
21 覆盖了a的空间。
22 strcat不能这么用!!
23 希望楼主好好补补基本知识 |
|