Допустим, у меня есть первая структура, подобная этой:
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 ++" или подобное, я использую этот метод по причине.