2016-01-30 4 views
-3

Есть ли способ проверить, где значение хранится в памяти C (куча, стек, текст и т. Д.), Используя Visual Studio 2015?Узнайте, в какой части памяти хранится значение?

К примеру, в этом коде:

char *day(int n) { 
static char *name[] = { 
"error", "monday", "tuesday", "wednesday", 
"thursday", "friday","saturday", "sunday" 
}; 

, чтобы узнать, где имя массива, имя [0], статическое имя и т.д. хранятся

+1

Что делает Visual Basic с любым из этого? Вы пытаетесь написать C-парсер в VB? –

+0

Как правило, программа не может получить доступ или изменить другую память программ, так как это вызовет проблемы с безопасностью. Вы могли бы получить c-программу для получения местоположений и отправки ее в визуальную базовую программу. Кроме того, если вы запускаете программу внутри отладчика, тогда ее память может быть изменена во время ее работы. –

+0

Duplicate: http://stackoverflow.com/q/13719563/3049655? –

ответ

1

Вам не нужно, чтобы проверить его ; вы знаете:

  • Автоматические переменные находятся в стеке;

  • Не нулевые инициализированные (глобальные) переменные находятся в сегменте DATA;

  • Нулевые инициализированные (или не инициализированные) глобальные переменные находятся в BSS, которая расширяет сегмент DATA;

  • Динамически выделенная память находится в сегменте HEAP.

  • Константные строки могут быть в сегменте DATA или в отдельном сегменте TEXT с записью, но это зависит от компилятора.

В вашем примере, name будет находиться в сегменте данных и неизменных строк в сегменте TEXT.

+0

Большое спасибо за ответ. –

Смежные вопросы