先上例子
可以看到这里我先构造了一个IMAGE对象并加载了图片,接着我new了一个FILESTYLE对象,把图片复制了进去。在绘制完成后,先用delete回收了填充对象,再回收图像,然后问题出现了,img的回收出错了
也就是说,填充对象在回收的时候!把图片对象也进行了“回收操作”!我还以为填充对象的图片指针是本来就有值的,结果我测试了下发现,默认是没有的!
那么问题来了,既然填充对象的图片指针确实引用的外部地址,为什么在回收时会对图像内存进行回收?当然,如果只是这样,那这也没甚么,但是问题是,他对这个外部地址的回收,不止是调用析构函数而已!那可是外部指针啊!你怎敢假定我会用什么样的方式开辟内存?我在栈上声明了一个对象,结果不出意外的,又出错了
得,连临时变量都不能用了,也就是说我只能用new这一种方式开辟IMAGE对象对填充样式赋值了呗?
而且如果某一方被回收,我还必须把另一方的指针置空,防止被二次回收,那tm可暴露在外的指针啊!如果想把它变成私有的为什么会用全局访问权限?明明可以直接把IMAGE变量声明在FILESTYLE对象内,或者把指针封装起来,用函数对外供接口操作,但他这个不但把指针暴露在外面还擅自操作,这也太逆天了
可以看到这里我先构造了一个IMAGE对象并加载了图片,接着我new了一个FILESTYLE对象,把图片复制了进去。在绘制完成后,先用delete回收了填充对象,再回收图像,然后问题出现了,img的回收出错了
也就是说,填充对象在回收的时候!把图片对象也进行了“回收操作”!我还以为填充对象的图片指针是本来就有值的,结果我测试了下发现,默认是没有的!
那么问题来了,既然填充对象的图片指针确实引用的外部地址,为什么在回收时会对图像内存进行回收?当然,如果只是这样,那这也没甚么,但是问题是,他对这个外部地址的回收,不止是调用析构函数而已!那可是外部指针啊!你怎敢假定我会用什么样的方式开辟内存?我在栈上声明了一个对象,结果不出意外的,又出错了
得,连临时变量都不能用了,也就是说我只能用new这一种方式开辟IMAGE对象对填充样式赋值了呗?
而且如果某一方被回收,我还必须把另一方的指针置空,防止被二次回收,那tm可暴露在外的指针啊!如果想把它变成私有的为什么会用全局访问权限?明明可以直接把IMAGE变量声明在FILESTYLE对象内,或者把指针封装起来,用函数对外供接口操作,但他这个不但把指针暴露在外面还擅自操作,这也太逆天了