Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 21:13   #1
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию Доступ к ячейкам памяти

Есть две программы ,первая просто создает переменные ,вторая пытается подключится к переменным первой по указателям на нее

test.c
Код:
#include <stdio.h>
#include <stdlib.h>

int *globalptr;
int global;

int main(int argc , char *argv[])
{
	int main_;
	int *mainptr;

	mainptr = malloc (sizeof(int));	
	globalptr = malloc (sizeof(int));
	
	*globalptr= 1;
	*mainptr  = 2;
	global    = 3;
	main_     = 4;
	
	printf ("Имя             |Значение   |Адрес\n"); 
	printf ("Global dynamic  |  %6d   |    %p\n",*globalptr,globalptr);
	printf ("Main   dynamic  |  %6d   |    %p\n",*mainptr,mainptr);
	printf ("Global          |  %6d   |    %p\n",global,&global);
	printf ("Main            |  %6d   |    %p\n",main_,&main_);

	printf("Программа задержана функцией getchar()\n");
	getchar();
        free(globalptr);
        free(mainptr);
}

memoryreader.c
Код:
#include <stdio.h>

int *_globalptr = NULL;
int *_global    = NULL;
int *_mainptr   = NULL;
int *_main_     = NULL;


int main(int argc ,char *argv[])
{
	_globalptr = (int*)0x9c13018;
	_mainptr   = (int*)0x9c13008;
	_global    = (int*)0x804a028;
	_main_     = (int*)0xbfa17edc;


	printf ("Переменные программы test \n\n");

	printf ("Имя             |Значение   |Адрес\n"); 
	printf ("Global dynamic  |  %6d   |    %p\n",*_globalptr,_globalptr);
	printf ("Main   dynamic  |  %6d   |    %p\n",*_mainptr,_mainptr);
	printf ("Global          |  %6d   |    %p\n",*_global,_global);
	printf ("Main            |  %6d   |    %p\n",*_main_,_main_);

}
по идее все должно работать ,но при выполнении программа вылетает с ошибкой сегментирования .


Чем это может быть вызвано .
Изображения
Тип файла: jpg Programs.jpg (9.1 Кб, 175 просмотров)

Последний раз редактировалось Hemul; 18.05.2011 в 07:15.
Hemul вне форума Ответить с цитированием
Старый 17.05.2011, 21:35   #2
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

У каждой программы - своя память. Так что когда ваша вторая программа обращается к адресу 0x9c13018, то она обращается к своей памяти.

Последний раз редактировалось zotox; 17.05.2011 в 21:41.
zotox вне форума Ответить с цитированием
Старый 17.05.2011, 21:43   #3
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Интересно, что за идея по которой это должно работать?
У каждой программы свое адресное пространство.
Если хочется завести шару для обмена данными между процессами читаем тут http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx.

Кстати, а кто память освобождать будет?

Последний раз редактировалось f.hump; 17.05.2011 в 21:50.
f.hump вне форума Ответить с цитированием
Старый 17.05.2011, 22:16   #4
Dayman
Форумчанин
 
Аватар для Dayman
 
Регистрация: 12.01.2011
Сообщений: 186
По умолчанию

Либо гуглите в сторону примеров с OpenProcess и ReadProcessMemory
Хотя в данном случае лучше через общую память делать или с помощью другово IPC метода (именованые каналы например).
Lingua c++ non penis caninus est.
Dayman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как из одного процесса получить доступ к памяти, занятой другим процессом? Bиталий Qt и кроссплатформенное программирование С/С++ 7 09.02.2011 19:38
Прямой доступ к памяти Sibedir Общие вопросы Delphi 20 13.06.2010 17:19
Доступ к ячейкам запроса/таблицы. Kliron Microsoft Office Access 1 23.03.2010 19:17
Обращение к ячейкам памяти HDD, чтение и запись Silver-nic Win Api 8 08.09.2009 16:51
Доступ к памяти другой программы BaronTreep Win Api 10 31.05.2009 07:16