Я работал над некоторым унаследованным кодом С++, который использует структуры переменной длины (TAPI), где размер структуры будет зависеть от строк переменной длины. Структуры выделяются массивом литья new, таким образом:
STRUCT* pStruct = (STRUCT*)new BYTE [sizeof(STRUCT) + nPaddingSize];
Позже, однако, память освобождается с помощью вызова delete:
delete pStruct;
Будет ли это сочетание массива new [] и non-array delete вызвать утечку памяти или будет зависеть от компилятора? Было бы лучше изменить этот код, чтобы вместо этого использовать malloc и free?