Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Заблокирован

Где в памяти храняться данные моего приложения?

02.06.2011, 09:04. Показов 3870. Ответов 35
Метки нет (Все метки)

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

2. Создаю всю туже глобальную переменную DWORD data=200. Хотелось бы узнать, по какому адресу моё приложение загонит её в оперативную память? Ну если так подумать, DWORD - это ж дабл ворд, тоесть 32-х разрядная переменная, тоесть в ней два WORD и 4 BYTE, правильно? Тоесть создавая переменную DOWRD data=200, грубо говоря добавляются не значимые нули слева для соответствия разрядности, короче говоря, в какой блок памяти все эти 32 бита заносятся. Суть в следующем: хочу ради эксперимента в одном приложение создать DWORD data, а в другом приложение обратиться к блоку памяти с этой переменной и прочитать его, это же возможно? Или мне напишут в Windows что - типа ЭКСЭС ДИНАЙТ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.06.2011, 09:04
Ответы с готовыми решениями:

С-строки. Где храняться? Когда удаляются?
есть, к примеру, такой класс class Hero { private: char * name; public: Hero(char * n = "TORIN")

Где храняться скрипты на страницах?
Здравствуйте. Я не знаю javascript и не писал сайтов, подскажите где могут храниться скрипты которые выполнятются настранице. ...

Где храняться иконки для LibreOffice?
И так. Есть у меня LO. Поскольку мне не нравятся их выпуклые всякие кнопки, да мне вообще выпуклые элементы не нравятся, то я достаточно...

35
 Аватар для denix
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
02.06.2011, 11:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от taras atavin Посмотреть сообщение
WNDCLASSEX тому пример.
лишнее поле, примеров то полно, а смысла хранить размер самой структуры в поле структуры, имхо, во-первых, лишняя память, во-вторых, это не нужно вообще
1
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.06.2011, 11:02
Цитата Сообщение от FarStar Посмотреть сообщение
но он же одинаковый всегда
нет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct A
{
 int q;
 int w;
};
struct B // размер этой структуры, даже пустой, в два раза больше, чем A. В 32-х разрядных системах A занимает 64, а B 128 байта, при заполнении этот размер не меняется.
{
 int q;
 int w;
 int e;
 int r;
};
.

Добавлено через 45 секунд
Цитата Сообщение от FarStar Посмотреть сообщение
объявление со строкой typedef? Чем это круче ? ;-))
Не круче. Просто так объявляются все новые склярные типы, кроме enum.
1
 Аватар для denix
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
02.06.2011, 11:02
FarStar,

поставь людям плюсики, закрой тему и иди почитай какой нибудь учебник по С
1
Заблокирован
02.06.2011, 11:03  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
LP - уже указатель. c++ этого не понимает и если ты просто напишешь LPDWORD, то нифига не получится. Но типы с префиксом LP принято декларировать как указательные. Так что звёздочку в декларации указателя ставить уже не надо, иначе получишь указатель на указатель.
WNDCLASSEX тому пример.
Не понял, тыж сам сказал что С++ этого не понимает и что это просто так принято, так почему получится указатель на указатель?
Вот это что : LPDOWRD *cool; ?
а это: LPDWORD cool?
а это DWORD cool?
а это DWORD *cool?
;-))
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.06.2011, 11:04
Цитата Сообщение от denix Посмотреть сообщение
лишнее поле, примеров то полно, а смысла хранить размер самой структуры в поле структуры, имхо, во-первых, лишняя память, во-вторых, это не нужно вообще
согласен и никогда так не делаю.
0
 Аватар для denix
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
02.06.2011, 11:05
Цитата Сообщение от taras atavin Посмотреть сообщение
Просто так объявляются все новые склярные типы, кроме enum.

во-первых,
не объявляются, а определяются.
во вторых, не новые типы, а новые имена типов
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.06.2011, 11:09
Цитата Сообщение от FarStar Посмотреть сообщение
Не понял, тыж сам сказал что С++ этого не понимает и что это просто так принято, так почему получится указатель на указатель?
Так принято людьми, а не понимает c++. Но в декларации типа кроме самого префикса есть ещё одно указание на то, что это тип указателя, его уже читает и понимает компил, а люди, кроме аторов каждой такой декларации, обычно не видят. Но одно с другим связано, потому что так принято.

Добавлено через 3 минуты
Цитата Сообщение от denix Посмотреть сообщение
во вторых, не новые типы, а новые имена типов
А есть разница?
Цитата Сообщение от denix Посмотреть сообщение
не объявляются, а определяются.
Я учил сначал паскаль, а там есть разделы деклараций (объявлений) и раздел операций. Типы в принципе упоминаются только в разделах деклараций. Раздел типов (где они по твоей версии определяются) - один из этих разделов, а в разделе перемнных эти дкларации используются.
0
 Аватар для denix
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
02.06.2011, 11:09
FarStar, пока не сядешь за книжку, вопросы у тебя будут появляться в геометрической последовательностью.
почитай, и все будет тебе ясно, и вопросов таких задавать ты не будешь

удачи
0
Заблокирован
02.06.2011, 11:10  [ТС]
Пл.сики всем поставил :-)) А зачем они нужны то ваще ?

Так что, если я хочу объявить указатель, то мне достаточно перед его именем добавить LP? и будет считаться, что это указатель?
Или я могу объявить его без LP, но со звёздочкой, к примеру, DWORD *pointer; - будет тоже самое ?
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.06.2011, 11:12
Цитата Сообщение от denix Посмотреть сообщение
лишнее поле, примеров то полно, а смысла хранить размер самой структуры в поле структуры, имхо, во-первых, лишняя память, во-вторых, это не нужно вообще
Кстати, только что ты впервые об этом слышал, а теперь примеров то полно.
0
 Аватар для denix
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
02.06.2011, 11:13
taras atavin, да разницы то нет, просто новых типов ты typedef не вводишь.
в С слова объявляются и определяются имеют разный смысл

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
Кстати, только что ты впервые об этом слышал, а теперь примеров то полно.
примеров полно у тех, кто второй месяц программы пишет
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.06.2011, 11:20
Цитата Сообщение от FarStar Посмотреть сообщение
Так что, если я хочу объявить указатель, то мне достаточно перед его именем добавить LP? и будет считаться, что это указатель?
Нет. Но другой програмер, прочитав такое имя, подумает, что это указаетль.
C++
1
2
int LPi; // ваще не правильно, в именах указателей для этого палая p без l.
LPint pdata; // подразумевается, что указатель, но c++ такого типа не знает.
C++
1
2
#define LPint double /* не правильно, так как вводит в заблуждение */
LPint pdata; // но теперь c++ уже знает, что это такое
C++
1
2
#define LPint *double /* не правильно, так как вводит в заблуждение */
LPint pdata; // но теперь c++ уже знает, что это такое. Только это указаетль на double
C++
1
2
#define LPint int /* не правильно, так как вводит в заблуждение */
LPint pdata; // но теперь c++ уже знает, что это такое
C++
1
2
3
#define LPint int* /* правильно */
LPint pdata; // вот теперь это указаетль
LPint data;  // и это тоже указатель, но если далеко от это декларации встретится это имя, то не сразу пйомут, что это указатель, а по предыдущему имени сразу
Добавлено через 46 секунд
А можно с макросом и не связываться, а действительно объявить такой тип.
0
 Аватар для denix
65 / 65 / 5
Регистрация: 11.01.2009
Сообщений: 130
02.06.2011, 11:24
Цитата Сообщение от taras atavin Посмотреть сообщение
1
2 #define LPint *double /* не правильно, так как вводит в заблуждение */
LPint pdata; // но теперь этот тип c++ уже знает
друг, ошибка!

я бы тебе все же хотел посоветовать разобраться с typedef и с define.
они имеют разную природу и ты не путай их. define никаких новых синонимов типов не вводит, он работает на стадии препроцессора.

не путай

удачи
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.06.2011, 11:36
Цитата Сообщение от denix Посмотреть сообщение
примеров полно у тех, кто второй месяц программы пишет
Мелкомягкие давно пишут.

Добавлено через 2 минуты
Цитата Сообщение от denix Посмотреть сообщение
друг, ошибка!
Уже исправил. Здесь действительно создаётся не тип, а макрос, подставляющий его описание. На паскале привык звать типом всё, что после
Pascal
1
:
, будь то
Pascal
1
2
type a=record q,w:integer; end;
b:a;
или
Pascal
1
b:record q,w:integer; end;
.
Добавлено через 3 минуты
C++
1
2
typedef int* LPint;
LPint pdata; // правильно и теперь действительно использовано имя типа
C++
1
2
#define LPint int*
LPint pdata; // а здесь на самом деле написано int* pdata, что в точности идентично int *pdata
Добавлено через 5 минут
Цитата Сообщение от denix Посмотреть сообщение
typedef не вводишь.
Как? typedef - сокращение от type define, дословно определение типа. Как же определение типа может его не вводить?
0
 Аватар для kazak
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,318
02.06.2011, 12:00
Статья правда старая, но довольно таки познавательная
Типы данных
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
02.06.2011, 14:27
Цитата Сообщение от taras atavin Посмотреть сообщение
Как же определение типа может его не вводить
typedef не вводит тип, он вводит только псевдоним существующего типа. Это разные вещи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2011, 14:27

Возможен ли запуск стороннего приложения в окне моего приложения?
Возможно ли запускать стороннее приложение в окне моего приложения ? В Идеале не терять кроссплатформенность, в основе лежит Windows....

При переносе приложения на карту памяти где хранятся SharedPreferences, SQLite базы и тп ?
Где хранятся настройки SharedPreferences, SQLite базы и тд? Нужно ли что то дополнительно прописывать или при переносе на карту памяти...

Где в реестре лучше всего хранить данные об активации приложения?
Приветствую. Хотелось бы понять, где именно в реестре лучше всего хранить данные об активации приложения? Что бы и не на глазах и в то же...

Найти участок памяти где содержится dll и прочитать данные которые хранятся в определенных адресах
Подскажите у меня есть процесс но в нем еще есть подгружаемые dll мне нужно в процессе найти эту участок памяти где содержится dll и...

Плагины для моего приложения.
Кто-нибудь может подсказать хороший ресурс или литературу, где описывается технология плагинов? Как разработать систему, чтобы она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru