程序出bug原因总结

1、如果

string str("hello");
cout << str;
出错了,那是因为没有加上#include<string>头文件

2、如果项目文件夹debug中的应用程序运行结果没有或者和程序调试结果不一样,可能是没有在debug文件夹中加上程序中用到的相对路径的文件。


3、报错 stack  overflow,是栈溢出了,windows默认栈的大小是1M,栈区是由编译器自动分配释放,存放函数参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

如果是栈溢出了,可能是分配的局部变量太大太多,比如数组大小超过1M就会报错,可以用new分配数组,用new分配占的内存是在堆中,堆的大小是可以随意分配的,只要不超过机器运行内存。


4、输入输出字符串流,包含头文件#include<sstream>,

string imageSaveName;
stringstream stream;
stream.clear();
stream << "C:\\Users\\TangQingYun\\Documents\\Visual Studio 2013\\Projects\\AviToImage\\" ;
stream.str();
stream >> imageSaveName;
输出imageSaveName为 C:\\Users\\TangQingYun\\Documents\\Visual,因为 stream >> imageSaveName;遇空格就停止了。

5、如果用ofstream写文件,写不进去,可能是因为写完文件后没有close文件夹。

6、输入一个字符串到一个stringstream中,再输入另一个字符串到这个stringstream中时,要清空这个stringstream,清空stringstream不是用stream.clear(),而是用stream.str("")。

7、由于数组在定义初始化时,如果要确定数组的维度,维度必须为常量,在编译时能确定的量,而真实情况是往往我们需要运行时才能知道我们要定义多大的数组,这个时候可以用动态数组。

8、在调用函数时,我们需要改变输入到函数的值,这个时候这个形参设置成指针,然后调用时加&。

9、函数形参为引用&格式,在调用函数时不需要加&。

10、多层for循环,外层循环尽量小一点,把多的循环加到内层。

11、定义一个成员函数,如果函数调用的对象是const常量,那么最好把函数定义为const函数。

12、报错:cannot have cv-qualifier//不能有CV限定

在C++中CV指const和volatile—1、非成员函数不能有CV限定,2、静态成员函数不能有CV限定

13、double=int/int 在求这种格式时,要把分子分母int型强制转换为double型:double=(double)int/(double)int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值