【发布时间】:2014-09-15 05:59:33
【问题描述】:
我已经为此苦苦挣扎了一段时间,但我真的无法理解,我只是遇到了段错误。我正在尝试复制一个类,我要复制的函数也在下面。划掉的是我试过的组合都没有成功,是时候求助了
class Scene
{ private:
int max;
int* x_row, *y_col; // maximum and min coordinates of each image
Image**image_layers;
}
void Scene::_copy(const Scene &source)
{
max = source.max;
x_row = new int[source.x_row];
y_col = new int[source.y_col];
image_layers = new Image*[source.max];
for(int i = 0; i < source.max; i++)
{
if(source.image_layers[i] != NULL)
{
//image_layers[i] = new Image(*(source.image_layers[i]));
// image_layers[i] = new Image;
//*image_layers[i] = *source.image_layers[i];
// image_layers[i] = source.image_layers[i];
}
else
{
image_layers[i] = NULL;
}
x_row[i] = source.x_row[i];
y_col[i] = source.y_col[i];
}
编辑:
我忘了说这个函数叫做“scene(*set)”
【问题讨论】:
-
是 C++ 吗?添加语言标签。
-
是的,是c++语言
-
你难道不好奇 target 对象 (
*this) 中的x_row、y_col和image_layers引用的数据会发生什么变化吗?调用这个东西,或者你对随后的内存泄漏感到满意。而这个:image_layers[i] = source.image_layers[i]除了指针之外不复制任何东西(并且在该过程之前立即泄漏分配)。完成后,您将有两个对象持有指向同一图像的指针。 -
我的教授不喜欢内存泄漏
标签: c++ function class pointers