메모리
-
[c++] delete[] 가 포인터를 받아도 잘 동작하는 이유 2(associative array)카테고리 없음 2022. 11. 9. 16:44
https://guru.tistory.com/133 [c++] delete[] 가 포인터를 받아도 잘 동작하는 이유(over-allocate) c++에서는 동적으로 객체를 생성 및 삭제를 시켜줄 때, new 그리고 delete 키워드를 쓰게 됩니다. 이때, new는 우리가 메모리를 할당하고, 생성자를 호출하게 되어, 그 사이즈나 크기를 명시해주게 됩 guru.tistory.com 이어, delete []를 사용했을 때, 사용되는 테크닉 "associative array"에 대해서 알아보겠습니다. 잠깐 정리하자면, delete[] 를 사용했을때, 얼마나 많은 소멸자를 호출해야 하는지 알 수 있게 하는 테크닉 중 하나인 "over-allocation"을 통해서 잠시나마 살펴보았습니다. 하지만 컴파일러는 as..
-
[c++] delete[] 가 포인터를 받아도 잘 동작하는 이유(over-allocate)뜯고 또 뜯어보는 컴퓨터/씨쁠쁠 C++ 2022. 11. 9. 16:23
c++에서는 동적으로 객체를 생성 및 삭제를 시켜줄 때, new 그리고 delete 키워드를 쓰게 됩니다. 이때, new는 우리가 메모리를 할당하고, 생성자를 호출하게 되어, 그 사이즈나 크기를 명시해주게 됩니다. 그렇지만 delete는 포인터만 넘겨줄 뿐인데, 어떻게 그 사이즈를 예측하고 삭제시켜 줄 수 있을까? 부연하자면, 밑과 같은 코드가 존재했을때, pFoo는 단순 포인터일 뿐인데, 어떻게 Foo array에 해당하는 메모리를 삭제시키고 알맞는 개수의 소멸자를 호출할 수 있을까요? class Foo { public: Foo() {} ~Foo() {} int mNunber; } int main() { Foo* pFoo = new Foo[10]; delete[] pFoo; } 메모리 할당에 해당 2가..