strcpy的分段错误[重复]
Posted
技术标签:
【中文标题】strcpy的分段错误[重复]【英文标题】:segmentation fault with strcpy [duplicate] 【发布时间】:2012-05-06 18:46:36 【问题描述】:我想知道为什么我在下面的代码中遇到分段错误。
int main(void)
char str[100]="My name is Vutukuri";
char *str_old,*str_new;
str_old=str;
strcpy(str_new,str_old);
puts(str_new);
return 0;
【问题讨论】:
【参考方案1】:str_new
是一个未初始化的指针,因此您正在尝试写入一个(准)随机地址。
【讨论】:
【参考方案2】:因为str_new
未指向有效内存——它未初始化,包含垃圾,并且如果您遇到分段错误,可能指向甚至未映射的内存。在调用strcpy()
之前,您必须使str_new
指向一个足够大的有效内存块以容纳感兴趣的字符串(包括末尾的\0
字节)。
【讨论】:
【参考方案3】:您还没有初始化*str_new
,所以它只是将str_old
复制到某个随机地址。
您需要这样做:
char str_new[100];
或
char * str = (char *) malloc(100);
如果您还没有使用 malloc 函数,则必须#include <stdlib.h>
。
【讨论】:
以上是关于strcpy的分段错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章