程序出bug原因总结

来源:互联网 发布:mac怎么装office 编辑:程序博客网 时间:2024/05/02 04:30

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

原创粉丝点击