65,186
社区成员




#include <stdio.h>
class BitWiseCopyClass {
public:
BitWiseCopyClass(){m_data= new int;};
~BitWiseCopyClass(){
delete m_data ;
}
private:
int* m_data;
};
void test(){
BitWiseCopyClass objA;
BitWiseCopyClass objB;
objB = objA;
// 结果导致 objA 和 objB 的指针都指向了同一个地址
// 函数结束析构时
// 同一个地址被delete两次, 所以会抛出double free异常,但在windows下没有抛出任何异常
}
int main()
{
test();
printf("done\n");
return 0;
}
//申请空间于堆上,释放空间会异常,而栈上没有异常
//同求原因吧...
class BitWiseCopyClass
{
public:
BitWiseCopyClass(){m_data= new int;};
~BitWiseCopyClass()
{
delete m_data ;
}
private:
int* m_data;
};
int main()
{
BitWiseCopyClass *objA =new BitWiseCopyClass;
BitWiseCopyClass *objB =new BitWiseCopyClass;
objB = objA;
delete objA;
delete objB;
printf("done\n");
return 0;
}