malloc function call로 처리하기?
보통.. 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();
}