개념 :
1. malloc.h 에 포함되어 있습니다.
2. memory allocation 의 약자 입니다.
3. 힙 영역에 메모리를 할당하는 함수 입니다.
4. 리턴된 값은 void 포인터이고 파라메터값은 정수 형태의 할당할 크기 입니다.
(나중에 void 포인터에 대해서 이야기 할 것 이지만 지금은 그냥 사용을 위해서는 반드시 캐스팅을 해야 한다로만 정의하고 넘어가도록 하겠습니다.)
목표:
문자열의 크기 만큼을 할당하고 문자열을 카피 한다.
소스코드 : main.c
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main(void)
{
unsigned char* pString = "Hello JunmoZzi";
unsigned char* pBuffer = NULL;
int nLength = strlen((const char*)pString) + 1;// "\0"문자 널까지 포함해서 1 입니다.
pBuffer = (unsigned char*)malloc(nLength);
if (pBuffer == NULL)
{
puts("Failed Memory Allocation!");
return 0;
}
memcpy_s(pBuffer, nLength, pString, nLength);
puts(pString);
puts(pBuffer);
if (pBuffer)
{
free(pBuffer);//메모리 할당했으면 반드시 해제 해준다.
}
return 0;
}
결과
#c언어, #c언어입문, #프로그램입문, #malloc, #메모리동적할당
'Programing - C > C Basic grammar ' 카테고리의 다른 글
091 calloc (0) | 2017.07.28 |
---|---|
take rest 03 == 비교 연산자를 쓰지 않는 함수를 만들어보기 (0) | 2017.07.28 |
메모리 영역에 대한 이해 (0) | 2017.07.28 |
take rest 02 중복 되지 않는 첫번째 문자 값을 찾아 리턴 (0) | 2017.07.28 |
089 _swab (0) | 2017.07.28 |