최대 1 분 소요

보통.. heap에 올릴때 malloc을 자주 사용한다..

int 형일때는 간단히 아래처럼 사용하고 없애는데…

int * buffer;

if((buffer = (int *)malloc(sizeof(int)*MAX_BUFF) == NULL)

printf(“메모리 부족 ㅡ.ㅡ;\n”);

for(int i =0; i < MAX_BUFF; I++)

buffer[i]=i;

free(buffer);

그런데 함수호출해서 만들때는 어떻게 해야할까??

아래처럼 하면되네.. 흠냐.

#include

#include

#define MAX_TX_BUFFER_SIZE 100

void create_tx_buffer( int ** buffer)

{

*buffer = (int*)malloc(sizeof(int)*MAX_TX_BUFFER_SIZE);

}

void finish_tx_buffer(int *buffer)

{

free(buffer);

printf(“free(buffer)\n”);

}

void using_buffer(int * buffer)

{

int i = 0;

for(i =0; i < MAX_TX_BUFFER_SIZE; i++)

buffer[i]=i;

for(i =0; i < MAX_TX_BUFFER_SIZE; i++)

printf(“%d \n”,*(buffer+i));

}

void main(void)

{

int * buffer;

create_tx_buffer(&buffer);

using_buffer(buffer);

finish_tx_buffer(buffer);

}

모 그냥 아래처럼 써도 된다..

#include

#include

#define MAX_TX_BUFFER_SIZE 100

int *buffer_addr;

void create_tx_buffer()

{

buffer_addr = (int*)malloc(sizeof(int)*MAX_TX_BUFFER_SIZE);

}

void remove_tx_buffer(void)

{

free(buffer_addr);

buffer_addr = NULL;

printf(“free(buffer)\n”);

}

void using_buffer(void)

{

int i = 0;

for(i =0; i < MAX_TX_BUFFER_SIZE; i++)

buffer_addr[i]=i;

for(i =0; i < MAX_TX_BUFFER_SIZE; i++)

printf(“%d \n”,*(buffer_addr+i));

}

void main(void)

{

create_tx_buffer();

using_buffer();

remove_tx_buffer();

}