#include <stdio.h> #include <malloc.h> typedef struct _Person { char Name[20]; int Age; } Person; void HeapMemorySize(void* _Memory) { printf("HeapMemorySize : %d\n", _msize(_Memory)); } int main(void) { char* pszData = (char*)malloc(sizeof(char) * 10); int* pnData = (int*)malloc(sizeof(int) * 10); Person* pPerson = (Person*)malloc(sizeof(Person)); HeapMemorySize((void*)pszData); HeapMemorySize((void*)pnData); HeapMemorySize((void*)pPerson); return 0; }
동적으로 할당된 메모리의 크기는 할당 당시에 확실히 명시해야 하므로 할당받는 처지에서는 그 크기를 모를 수가 없습니다. 그러나 간혹 함수 단위로 코드가 분할되면서 포인터로 주소를 받긴 하지만 크기를 받지 못해 할당된 메모리 크기를 모를 때도 있습니다. 이때 윈도우 운영체제의 경우 _msize()함수를 이용하면 크기를 알아낼 수 있습니다.
(참고로 리눅스, 유닉스는 malloc_usable_size() 함수를 사용합니다.)
[ 출저 ] - 명강의로 완성하는 C 프로그래밍
'C' 카테고리의 다른 글
[C] - 환경변수 출력 (0) | 2014.09.08 |
---|---|
[C] - const 포인터 사용법 (0) | 2014.09.08 |
[C] - 스캔셋(Scanset) (0) | 2014.09.08 |
[C] - scanf() 함수 (0) | 2014.09.08 |
[C] - getchar(), _getch(), _getche() 차이점 (0) | 2014.09.08 |