【发布时间】:2010-04-13 08:53:38
【问题描述】:
假设我有这样的第一个结构:
typedef struct {
int ivalue;
char cvalue;
}
Foo;
还有第二个:
typedef struct {
int ivalue;
char cvalue;
unsigned char some_data_block[0xFF];
}
Bar;
现在假设我做了以下事情:
Foo *pfoo;
Bar *pbar;
pbar = new Bar;
pfoo = (Foo *)pbar;
delete pfoo;
现在,当我调用删除操作符时,它释放了多少内存?
sizeof(int) + sizeof(char)
或者
sizeof(int) + sizeof(char) + sizeof(char) * 0xFF
?
如果这是由于强制转换而导致的第一种情况,有什么办法可以防止这种内存泄漏的发生?
注意:请不要回答“使用C++多态”之类的,我使用这种方法是有原因的。
【问题讨论】:
-
你可以像类一样声明结构。不用
typedef -
是的,我知道,只是一个坏习惯 :)
标签: c++ memory-leaks operators