VC编程过程中遇到的问题

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 ) ; 程序运行过程中会报错。
创建拷贝构造函数是深层次的解决办法。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值