메모리 관리 함수는 string.h에 포함되어 있습니다.
메모리 공간에 들어있는 자료를 주어진 크기만큼 비교하여 같은지 확인합니다.
int memcmp(const void * ptr1, const void * ptr2, size_t num)
ptr1과 ptr2의 처음부터 num길이 만큼을 비교합니다.
#include <stdio.h>
#include <string.h>
#define COMP(result) (result == 0) ? "같다" : "다르다"
int main(void) {
char* str1 = "aaaaaa";
char* str2 = "aabbcc";
int result1, result2;
result1 = memcmp(str1, str2, 2);
result2 = memcmp(str1, str2, 4);
printf("str1과 str2의 앞에 2byte는 %s\n", COMP(result1));
printf("str1과 str2의 앞에 4byte는 %s\n", COMP(result2));
return 0;
}
메모리를 복사합니다.
void * memcpy( void * dest, const void * src, size_t num)
src의 공간에서 num 길이만큼 dest에 복사하여 dest의 주소값을 반환합니다.
단순 이진데이터를 복사하는 것이므로 자료형과 무관하게 복사합니다.
#include <stdio.h>
#include <string.h>
#define COMP(result) (result == 0) ? "같다" : "다르다"
int main(void) {
char src[] = "123456789";
char dest[] = "abcdefghijklmnopqrstuvwxyz";
memcpy(dest, src, strlen(src)); // 문자열의 실제 길이만큼 복사
printf("%s\n", dest);
return 0;
}
반환값과 dest의 주소가 같기 때문에 반환 받을 필요는 없습니다.
지정된 값으로 메모리공간을 체웁니다.
void * memset(void * ptr, int value, size_t num)
메모리를 value 값으로 num 크기만큼 채웁니다.
이때 value는 unsigned char형으로 변환됩니다.
#include <stdio.h>
#include <string.h>
int main(void) {
char str[] = "123456789";
memset(str, '*', strlen(str));
printf("%s\n", str);
return 0;
}
memset은 메모리공간을 초기화하거나 내용을 삭제할때 주로 사용합니다.