[c++] 메모리 맵 활용

이 기술 블로그에서는 C++에서 메모리 맵을 활용하는 방법에 대해 다룹니다.

메모리 맵이란?

메모리 맵은 물리적 메모리를 파일이나 장치에 매핑하는 프로세스를 의미합니다. 이를 통해 파일이나 장치를 메모리 참조 연산을 통해 접근할 수 있습니다.

메모리 맵을 이용한 파일 입출력

C++에서는 파일을 메모리에 매핑시켜 입출력을 수행할 수 있습니다. mmap 함수를 사용하여 파일을 메모리에 매핑하고, 메모리에 있는 데이터에 직접 접근하여 파일 입출력을 수행할 수 있습니다.

아래는 파일을 메모리에 매핑하여 데이터를 읽는 예제 코드입니다.

#include <iostream>
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
    int fd = open("example.txt", O_RDONLY);
    struct stat sb;
    fstat(fd, &sb);
    char *addr = static_cast<char*>(mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0));
    close(fd);
    
    // 메모리에 매핑된 데이터에 접근하여 출력
    std::cout << "File contents: " << std::string(addr, sb.st_size) << std::endl;
    
    munmap(addr, sb.st_size);
    return 0;
}

요약

메모리 맵을 활용하면 파일이나 장치를 메모리에 매핑하여 더 효율적으로 입출력 작업을 수행할 수 있습니다. C++에서는 mmap 함수를 사용하여 이러한 기능을 구현할 수 있습니다.

더 많은 정보를 원하시면 mmap(2) - Linux man page를 참고하세요.