读书人

求求各位大牛帮忙看下代码有关问题出

发布时间: 2013-11-03 15:39:14 作者: rapoo

求求各位大牛,帮忙看下代码问题出哪了吧,调一天了也没调出来,都快哭了!!!!!!
麻烦各位大牛给看看吧,注释部分放开后,为何程序在析构的时候会报错呢,百思不得其解啊,都快哭了俺!!!!!!!!!!!!!!!!!!!!!!!
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库

读书人网 >C++

热点推荐