ㅠㅠ.. 프로그래머 1년차지만 C는 학생때 좀 해본것뿐이라.. 어렵네요..
일주일정도 헤매고 있습니다. ㅜㅠ
잘 아시는분 계시면 알려주시면 감사하겠습니다.
본론으로 들어가자면..
코딩의 목적은 DLL에 후킹함수를 만들어놓고 윈도우 이벤트에 반응해서 움직이게 만들고 있습니다.
아래와 같이 선언했습니다.
#pragma data_seg(".test")
static struct TEST_STRUCT *test_struct;
static char *temp_test = NULL;
static char temp_char[1000] = "start";
static int temp_int = 0;
#pragma data_seg()
#pragma comment(linker,"/SECTION:.test,RWS")
위의 두개의 변수(test_struct, temp_test)는 malloc을 써서 heap영역에 할당되고,
아래의 두개의 변수(temp_char, temp_int)는 static영역에 할당되는것으로 알고있습니다.
지금까지 알아낸바로는 static영역의 값은 각 쓰레드에서 참조가능해서 변수값의 공유가 가능했습니다.
그런데 malloc을 써서 heap영역에 할당된 값들은 각 쓰레드들에서 참조가 안되서 변수값의 공유가 불가능했습니다.
그래서 강제로 해당 변수(test_struct, temp_test)들의 주소값을 이용해서 접근해보려고 해도 접근에러가 발생했습니다.
static영역은 여러 쓰레드로부터 접근이 가능하니 해결방안으로
1. static영역에 고정으로 test_struct[100]으로 선언해서 공유 가능하게 하는방법.
2. static영역에 메모리를 동적으로 할당 받아오는 방법.
두가지를 생각해봤으나 역시 동적할당으로 메모리를 할당하는것이 정석이니 2번 방법으로 해결 해보고 싶습니다.
조언 부탁드립니다. ㅠㅠ