记录一些小小的bug:

使用visaul 2019编辑c语言程序:

程序可以正常运行,但程序结束退出时忽然报错闪退,原来是我定义password[]数组时没有规定数组大小,导致栈溢出。

正确的做法只要给数组规定一个大小就行了:

 

以下讲解来自chatgpt:

当你声明一个数组时,如果没有指定数组的大小,编译器无法知道需要为数组分配多少内存空间。如果你在声明数组后使用它,并且在使用过程中写入超出数组分配的空间范围的数据,就会导致栈溢出。

在C/C++中,数组是在栈上分配的,它们的大小在编译时确定。如果你声明一个没有指定大小的数组,编译器无法为其分配足够的内存空间。因此,当你尝试向未分配足够空间的数组中写入数据时,就会发生栈溢出错误。

要解决这个问题,你需要在声明数组时指定合适的大小,以确保分配足够的内存空间来存储你要使用的数据。例如,可以声明一个足够大的数组来存储密码,并确保不要超出数组范围进行读写操作。另外,还可以考虑使用动态内存分配函数(如malloc()或new)来在堆上分配内存。这样,你可以根据需要动态调整内存大小,从而避免栈溢出问题。

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐