답변
주소를 사용하는 게재 위치 new 생성자를 사용할 수 있습니다.
Foo* foo = new (your_memory_address_here) Foo();
는
C++ FAQ lite 또는
MSDN에 대한 자세한 설명을 살펴보십시오. 메모리가 올바르게 정렬되었는지 확인하기 위해 필요한 유일한 것 (
malloc
은 올바르게 정렬 된 메모리를 반환하지만 SSE와 같은 16 바이트 경계까지 정렬이 필요할 수 있음)를주의해야합니다.
게재 위치 new
을 호출하기 전에 메모리에 소멸자를 호출해야합니다. 최소한 객체에 중요하지 않은 소멸자가 있거나 구성원이 포함되어 있어야합니다. 소멸자가 명시 적으로 호출 할 수 있습니다 Foo
클래스의 객체 포인터 obj
에 대한
은 다음과 같습니다
이obj->~Foo();
새로 배치하기 전에 새로 할당 된 메모리에서 소멸자를 호출해야하는 이유는 무엇입니까? 나는 그것을 얻지 못한다 ... – Malkocoglu
일반적으로 할당되었지만 초기화되지 않은 메모리는 얻지 못한다. 그것이 실제로 당신이 가지고있는 것이라면, 물론 소멸자를 호출해서는 안됩니다. 다른 모든 경우에는 해당 위치에 적절하게 처리해야하는 대상이 이미 있습니다. –
모두 0으로 설정하지 않는 한 메모리를 초기화하지 않습니다. 개체를 초기화합니다. 임의의 메모리에서 dtor를 호출하는 것은 좋지 않습니다. 객체의 컨테이너를 수행하는 경우에만 dtor에 호출하는 것이 좋습니다. 이러한 객체에 비어 있지 않은 가상의 dtor가 있으면 작업을 수행하지 않아도됩니다. –
허용 대답 언급 배치 새로운 생성자는 헤더에 정의 된 할당 클래스 전에 오래된 방법입니다. 이제는 C++ 11 스타일로해야합니다 :
allocator<Foo> alloc;
//Allocate memory for one or n objects
auto p = alloc.allocate(1);
//Construct an object of Foo on allocated memory block p, by calling one of Foo's constructors
alloc.construct(p, args, ...);
//OK, p now points to a Foo object ready for use...
//Call Foo's destructor but don't release memory of p
alloc.destroy(p);
//Release memory
alloc.deallocate(p, 1);
그래, 맞아.
- 1. 중첩 된 구조 할당 메모리
- 2. 를 부르 UIControl의 touchUpInside 방법 내에서의 UIViewController
- 3. 솔라리스/리눅스에서 할당 된 메모리 해제하기
- 4. Windows 메모리 할당 질문
- 5. 메모리 할당
- 6. 메모리 할당
- 7. 메모리 할당
- 8. 리눅스에서 메모리 할당
- 9. 할당 된 메모리 허용량을 변경하는 방법은 무엇입니까?
- 10. 컴파일 된 실행 가능 메모리 할당 수정
- 11. 다른 DLL에 할당 된 메모리 해제
- 12. 정적으로 할당 된 메모리 양 계산
- 13. 메모리 누출의 C/메모리 할당 ++
- 14. 예외에 대한 메모리 할당
- 15. 메모리 할당 및 해제
- 16. iPhone 메모리 할당 문제
- 17. Cygwin의 메모리 할당 늘리기
- 18. Java 메모리 할당 정렬
- 19. 메모리 할당 디자인 질문
- 20. 스택 기반 메모리 할당
- 21. 스레드 당 메모리 할당
- 22. COCOA 객체 할당/할당 해제 + 메모리 최적화
- 23. 어셈블리 메모리 할당
- 24. 메모리 할당 순서는 C++
- 25. C# 메모리 할당 및 할당 해제 패턴
- 26. 메모리 할당 문제
- 27. TimerCallback.PerformTimerCallback 메모리 할당
- 28. Alligned 메모리 할당
- 29. 이상한 iOS 메모리 할당 동작
- 30. 디스플레이 할당 메모리
이 문제를 겪는 다른 사람은 : #include'이 작동하기 전에 - g ++은 도움이되지 않는 "no matching function"오류를 던졌습니다. [This] (http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.10)는 새로운 배치 (C++ FAQ)에 대한 정보로이를 이해하는 데 도움이되었습니다. –