하루의 쉼터

[Linux] 동적 할당 크기(SIZE) 구하기 본문

프로그래밍/C언어

[Linux] 동적 할당 크기(SIZE) 구하기

Changun An 2021. 2. 2. 14:41
반응형

| LINUX에서 동적할당으로 만들어진 포인터의 실제 크기를 구하는 함수

 

1. 필요 경우

- 포인터를 통하여 메모리를 할당하는 경우 사이즈가 필요한 경우들이 종종 있다.

- ex) 배열이 아닌 포인터로 함수 매개 변수를 이용하였는데 크기가 필요한 경우 등.

 

2. 함수

아래는 Windows 상에 있는 _msize와 같은 기능을 하는 함수이다.

 

size_t malloc_usable_size (void *ptr);

Hearder File malloc.h
Return Type size_t
Name malloc_usable_size
Parameters void *ptr

* 기능 : 사용되는 메모리의 블록 바이트를 리턴 하여 준다.

* Hearder File : 함수를 사용하기 위해 필요한 헤더파일 : malloc.h

* Return Type : 할당된 메모리 블록에서 사용 가능한 바이트 수 

* 매개 변수 : 동적 할당된 메모리 변수

 

예제)

#include<iostream>
#include<malloc.h>

int main(){
	int *num=(int*)malloc(sizeof(int)*10);
	size_t num_size = malloc_usable_size(num)/sizeof(int);
	retrun 0;
}

단 CPU 바이트 순서 및 정렬에 따라 요청된 크기보다 클수 있음.

stackoverflow.com/questions/44581168/malloc-usable-size-returns-the-wrong-size

 

malloc_usable_size() returns the wrong size

I want to know the size allocated by malloc. I have written the source code below. test.c #include #include #include void main(void) { uint8_t ...

stackoverflow.com

www.unix.com/man-page/linux/3/malloc_usable_size/

 

malloc_usable_size(3) [linux man page]

The malloc_usable_size() function returns the number of usable bytes in the block pointed to by ptr, a pointer to a block of memory allo- cated by malloc(3) or a related function. RETURN VALUE malloc_usable_size() returns the numb

www.unix.com

 

반응형
Comments