关于strcpy()的一个疑问

C语言 码拜 8年前 (2017-05-05) 1247次浏览
刚刚明白了

#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;

15

说明编译器没检查出来呗,运行的话会修改掉不该修改的内存,破坏性可想而知

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于strcpy()的一个疑问
喜欢 (0)
[1034331897@qq.com]
分享 (0)