게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[C언어] DLL에서 쓰레드간에 공유변수에 대해서 질문입니다.
게시물ID : programmer_5770짧은주소 복사하기
작성자 : 산적사마
추천 : 0
조회수 : 1041회
댓글수 : 2개
등록시간 : 2014/10/04 18:26:39
옵션
  • 베스트금지
ㅠㅠ.. 프로그래머 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번 방법으로 해결 해보고 싶습니다. 

조언 부탁드립니다. ㅠㅠ

꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호