2014-11-26 2 views
-6

, если я написал код ANSI C, и я использовал новые и удаленные операторы для управления динамической памятью. Есть ли недостатки для его использования?Недостатки использования new/delete в ANSI C

extern "C" void allocateString(char **str, int size) { 
    *str = new char[size]; 
} 

Это всего лишь образец кода.

+14

Важнейшим недостатком является то, что 'новый' ** не находится в C **. – usr2564301

+0

Что нового в C :-) – Klaus

+0

@Klaus: http://en.wikipedia.org/wiki/C11_%28C_standard_revision%29#Changes_from_C99 :-) – abligh

ответ

4

Ни один из new или delete не является частью ANSI C. Они являются частью стандарта C++.

В выделении динамической памяти C в куче выполняется с использованием malloc(), free() и связанные с ними функции, которые образуют часть библиотеки C (а не быть родным для самого языка, как и new и deleteоператоров в C++).

Использование их, таким образом, зависит от вашего компилятора C, не подтверждающего стандарт C (или более точно поддерживающего его расширение, которое не является частью стандарта).

Лучше выбрать один язык или другой, и избегать размытия обоих.

1

В стандарте C не указаны новые и удаленные операторы.

Смежные вопросы