런타임에 객체의 크기를 확인하려고합니다. sizeof는 컴파일 타임에 크기를 반환하기 때문에 작동하지 않습니다. 여기에 내가 무엇을 의미하는지의 예입니다런타임시 C++ 객체의 메모리를 확인하는 방법
class Foo
{
public:
Foo()
{
c = new char[1024*1024*1024];
}
~Foo()
{
delete[] c;
}
private:
char *c;
};
이 경우는, sizeof(Foo)
는 4 바이트가 아닌 ~ 1기가바이트 될 것입니다. 런타임에 Foo의 크기를 어떻게 결정합니까? 미리 감사드립니다.
가능한 복제본 [free()가 배열의 길이를 알고 있다면 왜 내 코드에서 요청할 수 없습니까?] (http://stackoverflow.com/questions/2650895/if-free-knows) 배열 길이 - 왜 - 내 - 자기 - 코드 - 왜 - 내 - 자체 - 코드 -) - –
에 의해 제어되는 메모리의 양을 개체의 크기를 구별 할 수 있습니다. 목적. 'c '를 가리키는 설정은 결코 객체 자체의 일부가 될 수 없습니다. 'Foo' 클래스의 객체는 모두 같은 크기입니다 (위의 예제에서 데이터 포인터의 크기입니다). 이것은 약간의 의미는 있지만 ... – dmckee
'컴파일 타임에 크기를 반환하기 때문에 sizeof가 작동하지 않습니다. '- 실제로 없습니다. 때로는 C99 및 GCC에서 런타임 sizeofs가 있습니다. (http://stackoverflow.com/questions/2615203/is-sizeof-in-c-evaluated-at-compilation-time-or-run-time/2709634#2709634) – osgx