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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2011, 09:00   #1
FarStar
Пользователь
 
Регистрация: 02.06.2011
Сообщений: 21
Радость Где в памяти храняться данные моего приложения?

Добрый день! Подскажите кто знает, у меня тут пара нубских вопросов:
1. Вот когда я создаю данные какого - нибуть типа, например DWORD data, я могу присвоить переменной data значение, к примеру, 200, а могу и C8 (это 200 в HEX). Так вот вопрос, С++ всё равно в какой системе исчисления и присваиваю значение переменной или всётаки нет ?

2. Создаю всю туже глобальную переменную DWORD data=200. Хотелось бы узнать, по какому адресу моё приложение загонит её в оперативную память? Ну если так подумать, DWORD - это ж дабл ворд, тоесть 32-х разрядная переменная, тоесть в ней два WORD и 4 BYTE, правильно? Тоесть создавая переменную DOWRD data=200, грубо говоря добавляются не значимые нули слева для соответствия разрядности, короче говоря, в какой блок памяти все эти 32 бита заносятся. Суть в следующем: хочу ради эксперимента в одном приложение создать DWORD data, а в другом приложение обратиться к блоку памяти с этой переменной и прочитать его, это же возможно? Или мне напишут в Windows что - типа ЭКСЭС ДИНАЙТ?
FarStar вне форума Ответить с цитированием
Старый 02.06.2011, 09:19   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)компу пофиг, он работает с двоичными числами, из хекса все равно в бинарный переводится.
2)оператор взятия адреса это &, соответственно &data даст вам адрес.
Цитата:
Суть в следующем: хочу ради эксперимента в одном приложение создать DWORD data, а в другом приложение обратиться к блоку памяти с этой переменной и прочитать его, это же возможно?
просто тупо присвоив адрес взятый с первого приложения указателю во втором?
нет не возможно. так как каждый процесс имеет собствнное адресное пространство, то есть он один там.
вылазить за рамки пространства можно только используя АПИ функции.(например артмани так делает)
Цитата:
Или мне напишут в Windows что - типа ЭКСЭС ДИНАЙТ?
опять же, учитывая адресное пространство, если в процесссе вашем(втором) есть чтото по тому адресу, то считаете это чтото из своего себя, иначе Access Violation.

ЗЫ: адрес что вы видите виртуальный.
вообще попробую поискать темку, где я подробно все это расписывал.
---------------------------------------------------
http://programmersforum.ru/showthrea...EE%F6%E5%F1%F1
немного не тот контекст, но смысл тот же.
еще можно Рихтера почитать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 02.06.2011 в 09:29.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.06.2011, 09:59   #3
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

1) Не имеет значения. Все данные хранятся в двоичном виде.
2) Кури статью: http://www.gunsmoker.ru/2011/04/windows.html
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данные из памяти сторонней программы epileptick Общие вопросы C/C++ 8 01.01.2011 19:19
Запуск приложения с виртуальной памяти PVD Общие вопросы Delphi 1 03.09.2010 23:09
где храняться пароли? ELO Операционные системы общие вопросы 1 22.02.2009 04:08
Где храняться данные в List View Icor Win Api 3 16.04.2008 19:15
Как активизировать окно моего приложения? _ozzy_ Общие вопросы Delphi 3 10.04.2008 13:25