최근에 일부 Vector/Matrix 클래스를 SSE를 사용하는 클래스로 대체했으며 이제 메모리가 올바르게 정렬되었는지 확인하고 있습니다.대체 연산자가 새로 추가 된 클래스에 대한 사용자 정의 std :: allocator
this question에 대한 대답에 대한 조언에 따라 필자는 new/delete 연산자를 필요로하는 클래스로 바꾸고 STL 컨테이너와 함께 사용할 사용자 지정 할당 자에 대한 작업을 시작했습니다. 그러나 사이에 약간의 충돌이있는 것으로 보입니다 두 가지 :
시작하려면 먼저 샘플 할당 자 클래스를 복사하여 here에서 붙여 넣었습니다. 예제 할당 자 클래스는 사용자 정의 새/삭제없이 해당 유형의 std :: vector와 함께 사용할 때 잘 컴파일됩니다. 하지만 그 함수를 대체 할 때 "constructor() 함수에서 'operator new'에 대한 호출과 일치하는 함수가 없습니다.
"평소"새로운 것을 대체했는지 모릅니다. 어떻게 든 새 게재 위치를 모호하게 만들었습니까? 그러나, 새로운 픽업을 쓸 수 없다는 점을 감안할 때, 나는 정말로 무엇을 해야할지 잘 모르겠다 ... 나는 전체 커스텀 메모리 할당에 대해 새롭다. 많이 감사하겠습니다!
저는 리눅스에서 Clang v3.4 (또는 gcc 4.1.2)를 사용하여 컴파일 중입니다. C++ 11을 사용하지 않습니다.
감사합니다. 이 발견 T
의 클래스 범위와 ::
를 생략함으로써
이 문제를 해결하기 위해':: new' ** 또는 ** 클래스에 대한 오버라이드 된 배치'new'를 구현합니다. – Yakk
아, 네, 이해가됩니다 ... 고마워요! 어떤 이유인지 나는 이것을 지적한 ccpreference에 대한 주석을 완전히 놓쳤습니다. "배치 새로운 (오버로드 5 및 6)은 대체 될 수 없지만 위에서도 설명한 것처럼 동일한 범위의 서명으로 함수를 정의 할 수 있습니다." 죄송합니다. – YamLady