eXeL@B —› Вопросы новичков —› Управление памятью и ООП |
Посл.ответ | Сообщение |
|
Создано: 13 апреля 2016 19:43 · Личное сообщение · #1 Доброго времени суток! Собственно вопроса два: 1. Известно, что встроенные типы данных (для которых известен размер) хранятся в стеке, а объекты в куче. Каким образом можно просмотреть эти области памяти в уже откомпилированной программе так, чтобы определить, что это переменная типа int и сейчас она равна двум, а вот объект с полями, значения, которых равно. Я понимаю, что отладчиком, но как это сделать. 2. Утверждается, что C#, Java полностью объектные языки, а не "дорого" ли хранить int k = 7; в виде объекта? |
|
Создано: 13 апреля 2016 19:49 · Личное сообщение · #2 Jb23 1. Что-то неправильно вам известно. .data value_x dd 27 это стек или куча? Данные хранятся так как определено разработчиком. Хочешь в стеке: void a() { int k = 3; } Хочешь в куче: void a() { int* k = new int; *k = 3; } Хочешь в сегменте данных: static int k = 3; int a() { return k; } 2. Ты бы книжки почитал, что ли. ----- старый пень | Сообщение посчитали полезным: Jb23 |
|
Создано: 13 апреля 2016 20:15 · Личное сообщение · #3 2. Ты бы книжки почитал, что ли. Такой вопрос возник, как раз после прочтения книг. Просто кто как пишет. Данные хранятся так как определено разработчиком. Спасибо! Эту информацию можно как-то восстановить, то есть, например, узнать, что всего в программе 11 переменных, 6 из них в куче, 4 в стеке, 1 в сегменте данных. |
|
Создано: 13 апреля 2016 21:19 · Поправил: deniskore · Личное сообщение · #4 Jb23 пишет: Эту информацию можно как-то восстановить, то есть, например, узнать, что всего в программе 11 переменных, 6 из них в куче, 4 в стеке, 1 в сегменте данных. Можно, дизассемблируете жертву и смотрите: 1) Обращение к DS сегменту это static переменные. В asm коде это может выглядить так в IDA PRO Code:
2) Память для локальных переменных выделяется через asm команду sub sp, size , где sp stack pointer(esp,rsp в х86 и х64, R13 в ARM Thumb), size это размер в байтах. 3) Остальное можно отследить поставив брейкпоинты на функции | Сообщение посчитали полезным: Jb23 |
|
Создано: 13 апреля 2016 22:41 · Личное сообщение · #5 |
|
Создано: 14 апреля 2016 00:05 · Личное сообщение · #6 |
eXeL@B —› Вопросы новичков —› Управление памятью и ООП |