Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
1

Как прочитать содержимое памяти ПК?

10.05.2016, 22:14. Просмотров 782. Ответов 18
Метки нет (Все метки)

Я так понимаю речь об ОЗУ.
1)Как при помощи простейшего консольного приложения узнать к-во ячеек памяти(это размер или адреса)
2)как прочитать их содержимое
3)как записать в содержимое ячейки памяти свои данные
4)как узнать куда можна п3 записывать
5)прошу пример для VS C++
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2016, 22:14
Ответы с готовыми решениями:

Как прочитать всё содержимое своей иконки
Есть файл, это программа, у этого файла есть иконка, как можно прочитать всё...

Как из файла прочитать размерность матрицы и её содержимое?
Помогите пожалуйста, ничего не нашёл! Как из файла прочитать размерность...

Как по ссылке прочитать ячейки памяти в turbo debugger c++ 3.0
Выполняя код на с++ программа собирается считать дамп памяти и что то с ним...

Прочитать из памяти по адресу
Задача: в памяти по адресу 0040:0010h (0x00400010) записано слово (информация о...

Не могу прочитать данные ячейки памяти
Подскажите пожалуйста что не так. Адресс ячейки вычислил через артмани. Код...

18
nmcf
6276 / 5578 / 2538
Регистрация: 14.04.2014
Сообщений: 23,468
10.05.2016, 22:19 2
Количество ячеек в чём?
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
10.05.2016, 22:51  [ТС] 3
к-во ячеек памяти ОЗУ
0
nmcf
6276 / 5578 / 2538
Регистрация: 14.04.2014
Сообщений: 23,468
10.05.2016, 22:58 4
Сомнительно, что это можно простейшим способом сделать. WinAPI надо задействовать.
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
10.05.2016, 23:01  [ТС] 5
можно пример
0
nmcf
6276 / 5578 / 2538
Регистрация: 14.04.2014
Сообщений: 23,468
10.05.2016, 23:07 6
Как-то так:
C++
1
2
3
MEMORYSTATUS ms;
GlobalMemoryStatus(&ms);
cout << "Всего памяти: " << ms.dwTotalPhys << endl;
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
10.05.2016, 23:13  [ТС] 7
какой заголовочный файл/лы подключить?

Добавлено через 56 секунд
Как узнать сколько памяти компьютер выделил под запуск нашей консольки?В каком адресном пространстве начало и коец?
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
10.05.2016, 23:22  [ТС] 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <WinBase.h>
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    MEMORYSTATUS ms;
    setlocale(LC_ALL, "rus");
    GlobalMemoryStatus(&ms);
    cout << "Всего памяти: " << ms.dwTotalPhys << endl;
    system("pause");
    return 0;
}
Компилятор выдает 230 ошибок
Как прочитать содержимое памяти ПК?


Как прочитать содержимое памяти ПК?
0
nmcf
6276 / 5578 / 2538
Регистрация: 14.04.2014
Сообщений: 23,468
10.05.2016, 23:24 9
windows.h
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
10.05.2016, 23:32  [ТС] 10
заменил
C++
1
#include <WinBase.h>
на
C++
1
windows.h
Как прочитать содержимое памяти ПК?

Только у меня на ноутбуке Aspire E1531g
должно быть 6 GB.
Так что за цифра вывела на консоли,а именно 4,29GB?
Как узнать сколько памяти компьютер выделил под запуск нашей консольки?В каком адресном пространстве начало и конец?Как прочитать содержимое например 1000 го байта ОЗУ?
0
nmcf
6276 / 5578 / 2538
Регистрация: 14.04.2014
Сообщений: 23,468
10.05.2016, 23:37 11
Лучший ответ Сообщение было отмечено scherbakovss201 как решение

Решение

Функция древняя оказалась. Вот так делай:
C++
1
2
3
4
    MEMORYSTATUSEX ms;
    ms.dwLength = sizeof(ms);
    GlobalMemoryStatusEx(&ms);
    cout << "Всего памяти: " << ms.ullTotalPhys << endl;
1
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
10.05.2016, 23:40  [ТС] 12
Как прочитать содержимое памяти ПК?

вот теперь результат ближе к правде.
0
nmcf
10.05.2016, 23:41
  #13

Не по теме:

Хорошо живёшь. 6 Гб на ноутбуке.

0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
10.05.2016, 23:42  [ТС] 14
Ответ на один из вопросов получен.
Как теперь сделать доступ к ячейкам как массиву?
0
nmcf
6276 / 5578 / 2538
Регистрация: 14.04.2014
Сообщений: 23,468
10.05.2016, 23:44 15
К каким ячейкам? Ты можешь пользоваться только памятью выделенной приложению. Ну а вообще через указатель.
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
10.05.2016, 23:46  [ТС] 16
Я не знаю сколько байт занимает мое приложение в ОЗУ.Где начало(адрес),а где конец(адрес) выделенной памяти под приложение.
0
scherbakovss201
15 / 6 / 16
Регистрация: 22.12.2015
Сообщений: 1,611
11.05.2016, 00:09  [ТС] 17
Как прочитать содержимое памяти ПК?

Ошибка 1 error C4700: использована неинициализированная локальная переменная "mbi" c:\users\sergey\documents\visual studio 2013\projects\consoleapplication26\consoleapplication26\consoleapplication26.cpp 24 1 ConsoleApplication26

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// ConsoleApplication26.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "rus");
    MEMORYSTATUSEX ms;
    _MEMORY_BASIC_INFORMATION mbi;
    ms.dwLength = sizeof(ms);
    GlobalMemoryStatusEx(&ms);
    cout << "   MEMORYSTATUSEX: " << endl;
    cout << "Всего памяти: " << ms.ullTotalPhys << endl;
    cout << "dwLength: " << ms.dwLength << endl;
    cout << "ullAvailVirtual: " << ms.ullAvailVirtual << endl;
    cout << "dwMemoryLoad: " << ms.dwMemoryLoad << endl;
    cout << "ullAvailExtendedVirtual: " << ms.ullAvailExtendedVirtual << endl;
    cout << "ullAvailPageFile: " << ms.ullAvailPageFile << endl;
    cout << "ullAvailPhys: " << ms.ullAvailPhys << endl;
    cout << "ullTotalPageFile: " << ms.ullTotalPageFile << endl;
    cout << "ullTotalPhys: " << ms.ullTotalPhys << endl;
    cout << "   _MEMORY_BASIC_INFORMATION: " << endl;
    cout << "AllocationBase: " << mbi.AllocationBase << endl;
    cout << "AllocationProtect: " << mbi.AllocationProtect << endl;
    cout << "Protect: " << mbi.Protect << endl;
    cout << "RegionSize: " << mbi.RegionSize << endl;
    cout << "State: " << mbi.State << endl;
    cout << "Type: " << mbi.Type << endl;
    cout << "BaseAddress: " << mbi.BaseAddress << endl;
    system("pause");
    return 0;
}
0
Renji
2105 / 1545 / 471
Регистрация: 05.06.2014
Сообщений: 4,484
11.05.2016, 05:12 18
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Как теперь сделать доступ к ячейкам как массиву?
Если под ячейками имеется ввиду физическая память, то либо поставив Dos, либо написав свою крутую Рак-ОС. "Рак" в данном случае поза в которой эту ОС будут иметь написанные под нее программы.

Под современными ОС приложение работает с виртуальными адресами, которые могут отображаться на физическую память, диск или вообще в никуда. А прямого доступа к физической памяти никто не даст по соображениям безопасности. Иначе это будет Рак-ОС.
Если же вам нужно именно по виртуальным адресам побегать, ну char*array=nullptr; и потом array[1234]. Плюс, поковыряться в Гугле на предмет "какие виртуальные адреса ведут в никуда".

Добавлено через 1 минуту
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Я не знаю сколько байт занимает мое приложение в ОЗУ
Переменное число байт, ибо виртуальная память позволяет часть приложения выкинуть в своп (на диск). Причем, не спрашивая мнения самого приложения.
2
nmcf
6276 / 5578 / 2538
Регистрация: 14.04.2014
Сообщений: 23,468
11.05.2016, 07:43 19
Здесь почитай про память: http://datadump.ru/process-address-space/
Там картинка есть с адресами.
0
11.05.2016, 07:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2016, 07:43

Bin файл из Modbus. Прочитать из файла область памяти
Доброго времени суток! Подскажите пожалуйста, у меня есть bin-файл из...

Прочитать файл в обратном порядке т.е. встать в конец файла и прочитать до начальной позиции
подскажите пожалуйста как можно прочитать файл в обратном порядке т.е. стать в...

Как сохранить контейнеры STL в файл. И как потом их прочитать из файла
В Qt такой контейнер как map&lt;T,T&gt; библиотеки STL заносится в файл занесением в...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru