[英]Why the error in the c++ code while use cout/cin?
您正在将输入读入未初始化的字符缓冲区指针,基本上是将输入转储到一些随机的内存块中,因此这是未定义的行为,它将崩溃。
您需要在使用之前初始化该缓冲区,或者,这里的C ++解决方案是使用字符串:
std::string name;
这将自动为您处理内存管理,并且不会遭受C固有的缓冲区溢出问题。
char* name;
是一个指针。 它需要指向一些内存。 当前它尚未初始化,因此它可以指向任何地方或任何地方。 这意味着当您这样做时; std::cin>>name;
它会像写入缓冲区一样随机写入程序空间。 这是未定义的行为,可能会导致任何后果,包括在您的情况下正常工作或崩溃。 在c ++中,您可以使用std::string
读入:
std::string name;
std::cin>>name;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.