Поведение malloc при удалении в C++

int *p=(int * )malloc(sizeof(int));

delete p;

Когда мы выделяем память с помощью malloc, мы должны освобождать ее с помощью free, а когда мы выделяем с помощью new в C++, мы должны освобождать ее с помощью удаления.

Но если мы выделяем память с помощью malloc, а затем используем удаление, то должна быть какая-то ошибка. Но в приведенном выше коде нет ошибок или предупреждений на C++.

Кроме того, если мы реверсируем и выделяем с помощью new и освобождаем с помощью free, то также нет ошибки или предупреждения.

Почему это так?

27
задан Brian Tompsett - 汤莱恩 22 August 2015 в 12:54
поделиться