2014-11-26 5 views
-6

ANSI C 코드를 작성한 경우 동적 메모리 관리에 새 연산자와 삭제 연산자를 사용했습니다. 사용시 단점이 있습니까?ANSI C에서 new/delete를 사용하는 단점

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

이것은 샘플 코드 일뿐입니다.

+14

가장 중요한 단점은'new' **가 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++ 표준의 일부입니다. 오히려 newdelete연산자 같은 언어 자체 네이티브되는보다 C 라이브러리 (의 일부를 형성

힙 C 동적 메모리 할당에

수행 사용 malloc(), free()과 연관된 기능는 C에 ++).

그래서 C 컴파일러에서 C 표준을 확인하지 않고 (또는 표준의 일부가 아닌 확장을 더 정확하게 지원하는) C 컴파일러를 사용합니다.

하나의 언어 또는 다른 언어를 선택하고 두 언어의 매쉬 매쉬를 피하는 것이 더 좋습니다.

1

C 표준에는 새 연산자와 삭제 연산자가 포함되어 있지 않습니다.

관련 문제