c++ 数组指针 深度复制 动态分配内存
c++吧
全部回复
仅看楼主
level 4
郝勇happy 楼主
class array
{
int len;
int *p_arr;
public:
array(int n1);
array(int a[],int n2);
~array();
array(array &x_array);
void print();
void recreact(int lenth , int new_number);
};
.......
array::array(array &x_array)
{
//深度copy
delete p_arr;
p_arr = new int[x_array.len];
len = x_array.len;
if (p_arr!=0)
{
for(int i=0; i<len ; i++)
{
*p_arr = *x_array.p_arr;
p_arr++;
x_array.p_arr++;
}
p_arr -= len;
x_array.p_arr -= len;
// cout<<*p_arr<<" "<<*x_array.p_arr<<"\n";
}
}
好像内存出错,求高手指点迷津
2013年10月21日 04点10分 1
level 4
感觉,你这里 p_arr-=len,有问题。。。 len要不要*4的?!你最好还是用个临时变量保存首地址不就行了。。。
2013年10月21日 08点10分 2
我测试过了,用下面那句注释掉的语句可以正确输出手地址
2013年10月21日 08点10分
level 9
应该是p-n+1
2013年10月21日 08点10分 3
不是,你错了!
2013年10月21日 15点10分
level 9
不过你的p可是私有 怎么直接访问
2013年10月21日 08点10分 4
拜托,下面的函数都是成员函数
2013年10月21日 15点10分
level 3
我是初学C++,混个脸熟
2013年10月21日 15点10分 6
同混脸熟
2013年10月24日 11点10分
level 6
你这段没问题, 可以出
正确的
结果.
2013年10月21日 16点10分 7
运行是完全对的,我是在学校的交作业的地方过不去,系统说我的程序断点异常,但是输出的答案是对的呀,不解,一个月了都
2013年10月24日 05点10分
回复 郝勇happy :怎么确定就是这段出了问题呢?
2013年10月24日 05点10分
回复 daliugo :找很多人看过了,其他地方没有问题,要不给你所有代码?
2013年10月24日 09点10分
回复 郝勇happy :ok给我看看,
2013年10月24日 10点10分
level 13
我是大水比[呵呵]
2013年10月21日 17点10分 8
level 1
double free??
2013年10月24日 04点10分 9
level 8
你还不知道当前对象的指针是否有效就直接释放?
2013年10月24日 04点10分 10
level 8
delete前你得注意这个是否有效吧,直接delete?
//深度copy
delete p_arr;
2013年10月24日 04点10分 11
这个无所谓吧,之前没有这句也是一样
2013年10月24日 09点10分
这个无所谓??这个是灾难
2013年10月24日 11点10分
回复 kolonse :我就是没加的时候做得不对,加了之后还是不对
2013年10月24日 11点10分
我也总觉得直接一上来就delete这个值得商榷呃
2013年10月24日 20点10分
level 10
一班是加个判断语句,指针是非空的再delete。
2013年10月24日 15点10分 12
1