【发布时间】:2013-04-25 08:40:25
【问题描述】:
这段代码使程序崩溃
#include <cstdio>
int main()
{
char *name1;
char *name2 = "Mark";
gets(name1);
puts(name1);
return 0;
}
而这不是
#include <cstdio>
int main()
{
char *name1 = "Mark";
char *name2;
gets(name2);
puts(name2);
return 0;
}
为什么? 我正在使用带有 Code::Blocks IDE 的 MinGW。
【问题讨论】:
-
不要使用裸指针。使用
std::string。裸指针非常难以理解和正确使用。 -
两个版本都错了:没有预留/分配空间