刚刚明白了
#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
说明编译器没检查出来呗,运行的话会修改掉不该修改的内存,破坏性可想而知