64,648
社区成员
发帖
与我相关
我的任务
分享
int* p = new int[10];
memset(p, 0x00, sizeof(int)*10);
void* pp = reinterpret_cast<void*>(p);
if (NULL!=pp) {
delete pp;
pp = NULL;
}
if (NULL!=p) {
delete[] p;
p = NULL;
}
if (NULL!=p) {
delete p;
p = NULL;
}
(2)使用placement new调用构造函数(简单类型忽略此步)
(3)返回内存指针
第二,构造函数
实例化对象,初始化数据的
第三,析构函数
放弃在类对象的构造函数或生命期中获得的资源(这里确实是包括释放互斥锁或删除内存,但我们分二步,删除内存放后面),这步,认为做一些简单的清理工作。
第四,删除内存
OK,删除内存就如第一步对应的了。
因此,楼主的当时的情况,是绝对不会内存泄露的。只是没有调用子类的析构函数而已。
如果不调用子类的析构函数会出现怎么情况,自己查书去吧.....偶就不多说了。
-----------------
PS:
楼主,跟据当时情况,我也断定那个Manager技术上是有些问题的。
但同样,如果是我我也不大会招你的。
原因如下:
《如果析构函数没什么 用,就可以不调用啊。》
上述话,你觉得应该说么? 事实上确实是这样说的,但是我们确实不应该说,程序并不是哪一个人写的,是大家一起合作的,你不能保证所有人技术方面都有很深入的理解。当他看到你的代码没有释放析构函数会怎么想。
OK,即使这样,万一哪天有人需要添加一些东西,然后在析构函数里释放怎么办?如果他不是很会呢?
再次,学会沟通,工作不如研究,沟通太重要了。技术感觉还是其次。
最后,写代码,写程序尽量让整个代码保持通用性,和一般性。即使可能有些感觉上写和不写是一样的代码。
例如,有个零时申请的new, 用完delete后,同样把指针置为NULL,尽管置不置都一样。这点类似你说的那个析构函数要不要virtual是一样的。
-----------
最最后,我相信楼主技术方面肯定是没什么问题的,我也确信楼主将来在技术方面会有一定成就的,不过希望楼主也多站在一般人,或者新人的角度来想想问题,这样您的职业生涯将会更加平坦,祝:楼主早日找到好的工作呢~~~