Поскольку я не очень много знаю о распределении памяти, я хотел бы знать, безопасно ли удалять блок последовательных байтов (массив), как этот.
void Free(void* ptr, size_t cbSize)
{
if (cbSize == 0) return;
if (ptr == NULL) return;
for(size_t i = cbSize; i > 0; i--)
{
char* p = &((char*)ptr)[i];
delete p;
}
char* p = (char*) (ptr);
delete p;
}
Я пробовал этот методпри следующих обстоятельствах и не получил ошибки.
int* a = new int[100];
Free(a, 100 * sizeof(int));
int* a = (int*) malloc(100 * sizeof(int));
Free(a, 100 * sizeof(int));