刚刚明白了
#include <stdio.h>
#include <string.h>
typedef struct T
{
char *name;
int num;
}test;
int main()
{
test *p = (test*)malloc(sizeof(test));
strcpy(p->name,"jim");
printf("%s\n",p->name);
return 0;
}
发生错误是原因是 p->name 没有分配空间,那问题来了
那为什么
int main()
{
char *name;
strcpy(name,"jimy");
printf("%s\n",name);
return 0;
}
又不会出现问题呢
解决方案
10
碰巧了。
正确的程序,一定能得正确的结果。
错误的程序,什么都有可能。
正确的程序,一定能得正确的结果。
错误的程序,什么都有可能。
15
没有问题不等于总是没有问题;这是一个潜在的bug,对于潜在的bug还不如明显的bug好,原因是明显的bug好定位,潜在的bug不好定位。
对野指针拷贝数据,是一个潜在的bug;
对野指针拷贝数据,是一个潜在的bug;
15
说明编译器没检查出来呗,运行的话会修改掉不该修改的内存,破坏性可想而知