powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Где выделяется память под глобальные переменные?
4 сообщений из 4, страница 1 из 1
Где выделяется память под глобальные переменные?
    #34587280
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VC6SP5
Есть DLL, которая внедряется в процесс через CreateRemoteThread(), который вызывает LoadLibraryA("My.dll")
Соответственно DllMain() выполняется в отдельном потоке, который по завершению DllMain() завершается.
Как я понял у каждого потока свой стэк, и по завершении потока его стэк становится неиспользуемой памятью, т.е. может быть затерт чем-нибудь в любой момент. Есть еще область данных приложения, т.е. адресное пространство под моей DLL, откуда win память точно никому не выдаст.

Непонятно где окажутся глобальные переменные и объекты.

DLL примерно такой структуры:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
struct MYLIST
{
	DWORD dwNum;
	HANDLE hHandle;
} strML[ 10 ];

clsMy oMy;
LPBYTE pbBuf = NULL;
INT nType;
CHAR szBuf[ 100 ];

DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
   switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
			pbBuf = (LPBYTE) VirtualAlloc(NULL,  100 , MEM_COMMIT, PAGE_READWRITE);
			nType =  1 ;
			break;
		...
	}
}
...
Рейтинг: 0 / 0
Где выделяется память под глобальные переменные?
    #34587736
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобще-то кроме стека и хипа есть еще и область кода. Вот в ней-то и располгают статические переменые
...
Рейтинг: 0 / 0
Где выделяется память под глобальные переменные?
    #34587811
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Точно, так и оказалось.
Вчера к вечеру голова уже квадратная была :)
Не догадался в отладчике адреса посмотреть. Все переменные и объекты в адресном пространстве, которое занимает моя DLL
...
Рейтинг: 0 / 0
Где выделяется память под глобальные переменные?
    #34588150
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedВобще-то кроме стека и хипа есть еще и область кода. Вот в ней-то и располгают статические переменые

Ну не совсем в секции кода - скорее в секции данных.
Страницы кода обычно защищены от записи.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Где выделяется память под глобальные переменные?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]