您的位置:首页 > 编程语言

VC编程过程中遇到的问题

2013-03-14 17:47 260 查看
1.2013年3月14日 星期四
BUG:在程序中调用某个含有自定义结构体类型的参数的函数,程序出现BUG。

原因:通过查看调用堆栈,发现是由于调用的该自定义结构体里面某个指向某段内存的变量被析构了。按原先意图是不应该调用析构函数的,后面查看 函数声明,发现对于该结构体参数,使用的值传递,导致函数退出时使用的析构函数。

解决办法:最简单的改为引用传递,问题解决。

深层次的解决办法,是为该自定义结构体 创建合适的拷贝构造函数。

示例:

class S
{
char* a;
s(){ a = NULL);
~s(){ if(a!= NULL) { delete[] a,; a= NULL}}
}
创建并定义函数 void FUN1(S a);
在某处使用, FUN1(a ) ; 程序运行过程中会报错。
创建拷贝构造函数是深层次的解决办法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: