首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求求各位大牛,帮忙看下代码有关问题出哪了吧,调一天了也没调出来,都快哭了!

2013-11-03 
求求各位大牛,帮忙看下代码问题出哪了吧,调一天了也没调出来,都快哭了!!!!!!麻烦各位大牛给看看吧,注释部

求求各位大牛,帮忙看下代码问题出哪了吧,调一天了也没调出来,都快哭了!!!!!!
麻烦各位大牛给看看吧,注释部分放开后,为何程序在析构的时候会报错呢,百思不得其解啊,都快哭了俺!!!!!!!!!!!!!!!!!!!!!!!
http://blog.csdn.net/simple_on_foot/article/details/14056039 C++析构报错
[解决办法]
string *s ???

用string或char*如何?


--pString->count 是要把count减一吗?  pString->count -= 1 ;
[解决办法]
因为你在copyInstruct.cpp中调用:
no_name.set(&s1); // 错误:将栈空间对象指针赋给要用delete释放的空间
delete只能释放对上的空间,即有new分配的空间。
[解决办法]
看了lz的代码,感觉少年对sharePtr的理解还是不大对的:
(1)


friend class NoName;

使用sharedPtr的class不用成为sharePtr的有元类,要是每一class只要用到sharedPtr都要先改写sharedPtr类,在其内部加上friend SomeClass,那sharedPtr还有个啥用处?
(2)

NoName::~NoName(void)  
{  
    if (--pString->count == 0) {  
        delete pString;  
    }  
}  

sharedPtr本来就应该设计成为智能指针,当sharedPtr自己析构了,才对共享的引用计数减一,当共享的引用计数为0的时候,由sharedPtr负责delete动态申请的内存,而不是让使用它的“友元”来负责
(3)ls已经提到了

关于sharedPtr的设计,还是建议lz去查一查相关资料吧,例如boost库

热点排行