初学者肯定吃过strcpy的亏,有时候编译明明通过的,运行时候就崩掉了,这是为什么呢?
下面给大家看一个例子
运行环境:操作系统win7, 编译器VC6.0
#include <stdio.h> #include <string.h> int main() { char str1[]="dest", *str2="dest"; strcpy(str1,"src"); strcpy(str2,"src"); printf("%s\n", str1); printf("%s\n", str2); return 0; }
这个程序就是编译通过但是运行失败的一个例子。其实这涉及到了运行时内存分配问题。
str1是字符数组,分配在栈区,因而可以操作。而str2指向常量区,所以不可以操作。
不信可以注释掉其中一部分试试