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

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

02.06.2011, 09:04. Показов 3527. Ответов 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 / 1796 / 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 / 1796 / 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 / 1796 / 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 / 1796 / 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 / 1796 / 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 / 1796 / 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
3605 / 2745 / 356
Регистрация: 11.03.2009
Сообщений: 6,311
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
Ответ Создать тему
Новые блоги и статьи
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru