malloc/free와 new/delete를 잘 비교하면 here이고, malloc() 및 free()가 here에서 어떻게 작동하는지 잘 설명합니다. 분명히, 우리는 그들을 섞어서는 안됩니다 - 새로운 것과 함께 자유롭게 사용하거나 malloc으로 삭제하십시오.malloc/free와 C++의 새로운/삭제 호환성?
위의 "no-mix"규칙을 존중하면서 많은 기여자가있는 많은 오픈 소스 프로젝트를 볼 수 있습니다. 일반적으로 하나의 파일 (한 명의 저자, 하나의 기본 설정)에 한 가지 방법 만 있습니다. 나는 그런 프로젝트를 갈래 았고 새로운/삭제 기능을 사용하여 몇 가지 기능을 추가하고있다. 그러나 나는 호기심 많은 기억 부패를 만난다.
내가 malloc에 / 무료 새로운 모두 메커니즘을 가질 수/삭제 : 물론,
일부 "순진한"질문을 날 리드..... 그들 중 아마 책임이 있지만, 동일한 편집 단위 (* .o)에서 - 물론 "no-mix"규칙을 존중합니까?
이 코드와 같이 두 가지 메커니즘을 인터리브 할 수 있습니까?
int *a = (int *) malloc (1000 * sizeof int); int *b = new int[1000]; // some code free a; delete[] b;
네, 그렇지만 자신의 코드에서'new' 또는'malloc'을 사용해서는 안됩니다. 'unique_ptr' 나'shared_ptr'와 같은 스마트 포인터를 대신 사용하십시오. – Simple
나는 그것이 합법적이라고 생각한다. –
생성자 또는 소멸자가있는 유형에 대해'malloc()'및'free() '를 호출하지 않도록 보장합니까? 이러한 호출은 클래스의 생성자 및 소멸자를 실행하지 않으므로 문제의 원인이 될 수 있습니다. – Julien