|
안녕하세요...
오늘도 고수님들께 조언을 구하고자 글을 올립니다. ^^;;;
공유메모리를 사용하여 두개 이상의 프로세스에서 데이타를 교환하고 있습니다.
하나의 구조체를 생성하여 공유메모리를 구성하였는데.
프로그램 설치환경(시스템 구성)에 따라 데이타의 양이 많이 다릅니다.
(적게는 수메가, 많게는 수백메가에 다다릅니다.)
그래서 공유메모리를 가변적으로 구성하고싶습니다.
생각하는것은 외부에 INI파일을 만들어 INI파일에 데이타의 크기를 저장하고,
실행할때 이 값을 읽어와 공유메모리를 구성하고싶습니다.
---------------------------------------------------------------------------------------
현재 구조체의 데이타 변수(3차원 배열)를 동적으로 할당하는 (아래와 같은)방법으로 접근하고 있습니다.
int AAA = 10;
int BBB = 10;
typedef struct _tag_
{
int ***data;
make(int cnt) {
data = new int**[cnt];
for(int i=0;i<cnt;i++){
data[i] = new int*[AAA];
for(int j=0;j<AAA;j++){
data[i][j] = new int[BBB];
}
}
}
}TTAG;
그런데 처음 공유메모리를 생성하는 부분에서 구조체의 크기를 줘야 하는데...
여기서 부터 막힙니다. 동적으로 할당하다 보니 구조체의 크기가 고정이지 않아
크기 자체를 어떻게 줘야 할지... 모르겠습니다.
// Memory Mapped File Create.
hFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, // 대상 파일의 핸들값
NULL, // 보안정보 관련(default null)
PAGE_READWRITE, // Access Type
0, // FileMap Object size(high)
--------- --> sizeof(SharedData), // FileMap Object size(low)
MMFileName); // FileMap Object Name
if(hFileMap == NULL) // Create fail
{
ShowMessage("Unable to create file mapping !");
return;
}
위와 같이 접근하는게 틀린가요???
다른방법으로 공유메모리를 가변적으로 생성할 수 있을까요???
고수님의 조언부탁드립니다...
|