Eclipse-С++ - Отладка: см. Содержимое массива
Можно ли увидеть содержимое динамически распределенного массива, как в:
int *array = new int[dimension];
Я вижу только значение указателя.
edit: просто нашел параметр "отображать как массив", но мне всегда нужно вручную вводить размер массива. Можно ли получить это автоматически?
Ответы
Ответ 1
в eclipse, чтобы увидеть содержимое динамически выделенного массива (для любого другого, кто наткнулся на этот вопрос),
- убедитесь, что вы находитесь в точке отладки. найдите окно "переменные". если вы его не видите, нажмите "окно" > "показать представление" > "переменные".
- щелкните правой кнопкой мыши по переменной массива
- отображать как массив
- eclipse не знает, насколько велик ваш массив, поэтому введите 0 для начального индекса и количество элементов, которые вы динамически выделили для длины.
![choose display as array in eclipse]()
Ответ 2
Если вам не нужно многократно делать "Display As Array", откройте вкладку "Выражения" и добавьте выражение (*[email protected])
. Не знаете, зачем нужны скобки. Без них вы получите ошибку.
Ответ 3
На вкладке "Выражения", если вы сделаете то, что четко отметили и введите (*[email protected])
, вы можете динамически установить размер массива для отображения. Это даже работает, когда вам нужно другое выражение, чтобы получить его.
Итак, у вас есть переменная x
, которая содержит ваш размер массива, вы набираете (*[email protected])
, и он будет использовать содержимое x как измерение.
"x" также могут быть такими, как содержимое структуры или разметки указателя и т.п. - т.е.
(*[email protected]>x)
отлично работает.
Ответ 4
просто нашел параметр "отображать как массив", но мне всегда приходится вручную вводить размер массива. Можно ли получить это автоматически?
Это хорошо. Я бы придерживался этого. Получение массива невозможно в общем случае на C или С++, хотя, конечно, в некоторых тривиальных случаях это может быть сделано (но, вероятно, еще нет, функции должны быть реализованы до их существования, чтобы перефразировать Raymond Chen).