📄 调试过程出现的问题.txt
字号:
1.设有一文件对象in_file,若在while循环中用in_file>>
每次从文件中得到一个字符串直到文件结束,
如果用in_file直接来判断文件是否结束,
则文件末的那个字符串会得到两次。
而用文件in_file.eof()来判断则会得到正确的结果。
2.用delete []释放字符串空间时,老是有问题,
其中的原因之一是你原来申请的空间不够大,
后来往这个空间中放了过多的内容以至越界,
这时候会发生运行时的错误。
3.把一个对象作为参数传给另一个对象的成员函数时,
程序不能正常结束,即系统删除对象时有问题;
而使用指针或者引用传递参数时不仅不会出现问题,
而且可以人为的删除对象。
我个人认为这很有可能是值传递的原因,
当把一个对象作为实参传给一个函数时,函数形参拷贝了实参的值,
这时,如果对象有指针成员,那么形参的指针成员的值和
实参的指针成员的值将完全一样,
即它们指向的是同一块内存,所以当函数调用结束的时候,
函数的形参将会被系统撤消,
这时,形参调用析构函数,释放用new动态申请的内存。在函数的外面,
作为实参的对象的指针成员其实已经被撤消了,所以当程序结束,
系统撤消这个对象时,这个对象又要调用析构函数来释放指针成员,
但这时指针其实已经指向了非法的空间,导致出错。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -