Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Владимир 1
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 17
#1

отладчик и динамический массив - C++

01.10.2012, 11:33. Просмотров 1886. Ответов 20
Метки нет (Все метки)

Здравствуйте. Объясните почему при создании динамического массива, отладчик (а точнее окно "контрольные значения") видит только один первый элемент?
Извините за название темы. Модератор, прошу Вас исправить на "отладчик и динамический массив"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2012, 11:33     отладчик и динамический массив
Посмотрите здесь:

Динамический массив - C++
Доброго времени суток! Помогите пожалуста. Нужно чтобы вместо else a=0; в 27 строке было удаления елемента... #include <iostream> ...

динамический массив - C++
такая задача: дана матрица размерностью mxn определить количество элементов являющихся простыми числами. матрица представленна в виде...

Динамический массив. - C++
Добрый день. Есть такая задача. //Задание 5. Создайте одномерный массив (размерность вычисляется в процессе //выполнения...

Динамический массив - C++
Заполнить массив следующим образом: матрица n(n+1) 1 1 1 1 ... 1 1 1...

Динамический массив - C++
Добрый день! Подскажите, как сделать, чтобы массив выводился как матрица, а не строчкой? Где закралась ошибка? #include <iostream> ...

Динамический массив - C++
Распечатать элементы динамического массива mas в одномерный динамический a. 1 по правым диагоналям, начиная с правого верхнего элемента ...

Динамический массив - C++
Используя указатели на тип для объявления массивов, определить количество столбцов в матрице, не содержащих ни одного нулевого элемента.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
773 / 706 / 129
Регистрация: 27.07.2012
Сообщений: 2,022
Завершенные тесты: 3
01.10.2012, 11:46     отладчик и динамический массив #2
Видимо, вы создаёте динамический массив как-то так:
C++
1
int * array = new int[Capacity];
array - это не массив, а указатель на первый элемент массива. Его и видит отладчик.
Владимир 1
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 17
01.10.2012, 13:18  [ТС]     отладчик и динамический массив #3
Цитата Сообщение от John Prick Посмотреть сообщение
Видимо, вы создаёте динамический массив как-то так:
C++
1
int * array = new int[Capacity];
array - это не массив, а указатель на первый элемент массива. Его и видит отладчик.
А можно как-нибудь просмотреть сам динамический массив в отладчике?
John Prick
773 / 706 / 129
Регистрация: 27.07.2012
Сообщений: 2,022
Завершенные тесты: 3
01.10.2012, 14:43     отладчик и динамический массив #4
Ну чтобы автоматически массив раскрывался, то напрямую не получится (либо что-то хитроумное кодить, но не знаю, стоит ли оно того).
Если массив небольшой, то можно просто добавить в watch каждый элемент array[0], array[1] и т.д. Если большой - добавлять только интересущие элементы.
Владимир 1
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 17
01.10.2012, 20:48  [ТС]     отладчик и динамический массив #5
Цитата Сообщение от John Prick Посмотреть сообщение
Ну чтобы автоматически массив раскрывался, то напрямую не получится (либо что-то хитроумное кодить, но не знаю, стоит ли оно того).
Если массив небольшой, то можно просто добавить в watch каждый элемент array[0], array[1] и т.д. Если большой - добавлять только интересущие элементы.
Спасибо. Хотя все равно непонятно, почему статические массивы можно просматривать по ссылке (имени), а динамические - нет.
Evg
Эксперт CАвтор FAQ
17462 / 5700 / 361
Регистрация: 30.03.2009
Сообщений: 15,636
Записей в блоге: 26
01.10.2012, 22:28     отладчик и динамический массив #6
Цитата Сообщение от Владимир 1 Посмотреть сообщение
А можно как-нибудь просмотреть сам динамический массив в отладчике?
Нельзя, потому как отладчик не знает, какого размера и чего ты там выделял. Для отладчика есть только переменная типа "указатель на int"

Добавлено через 1 минуту
Цитата Сообщение от Владимир 1 Посмотреть сообщение
Хотя все равно непонятно, почему статические массивы можно просматривать по ссылке (имени), а динамические - нет
Статический массив - это переменная типа "массив из стольки-то элементов". А динамический массив - это просто указатель. Вся отладочная информация, записываемая для отладчика - исключительно статическая
John Prick
773 / 706 / 129
Регистрация: 27.07.2012
Сообщений: 2,022
Завершенные тесты: 3
02.10.2012, 00:12     отладчик и динамический массив #7
Цитата Сообщение от Владимир 1 Посмотреть сообщение
Хотя все равно непонятно, почему статические массивы можно просматривать по ссылке (имени), а динамические - нет.
Хоть уже и ответили, добавлю и я. Когда массив задаётся статически, то его размер указывается явно в квадратных скобках. Вот эту цифирь в этих самых скобках отладчик может узнать, так как информация для отладчика формируется на этапе компиляции (тут я, может быть, не совсем прав, но для первого понимания достаточно). Когда же массив создаётся динамически, то на самом деле создаётся не массив, а вот что:
C++
1
int * array = new int[DynamicN];
Что здесь происходит? А по сути здесь происходит выделение памяти и создание DynamicN переменных типа int (где-то в "куче", лежащие подряд друг за другом) и адрес первой из этих переменных присваивается указателю array. Отладчик не покажет весь массив даже не потому, что не знает, чему будет равно DynamicN в момент создания, а потому, что для него нет того объекта, который он может показать (имеем в виду массив), а есть только именованый указатель array.
Вот такое объяснение перед сном Надеюсь, стало немного понятнее.
Evg
Эксперт CАвтор FAQ
17462 / 5700 / 361
Регистрация: 30.03.2009
Сообщений: 15,636
Записей в блоге: 26
02.10.2012, 00:15     отладчик и динамический массив #8
Цитата Сообщение от John Prick Посмотреть сообщение
так как информация для отладчика формируется на этапе компиляции (тут я, может быть, не совсем прав, но для первого понимания достаточно)
Абсолютно прав
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.10.2012, 00:20     отладчик и динамический массив #9
Цитата Сообщение от Владимир 1 Посмотреть сообщение
А можно как-нибудь просмотреть сам динамический массив в отладчике?
В памяти можешь посмотреть.
Для int, как пример, можно посмотреть в памяти элементы по порядку в их десятичном виде:
отладчик и динамический массив
Владимир 1
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 17
02.10.2012, 01:00  [ТС]     отладчик и динамический массив #10
Спасибо всем за подробное объяснение.
Нехорошо, правда, получается: мы что-то где-то создаем, работаем с этим, а отследить не можем.
Ну а в памяти копаться - это уж если совсем плохо будет
monochromer
398 / 360 / 141
Регистрация: 03.01.2013
Сообщений: 947
03.12.2013, 19:04     отладчик и динамический массив #11
Посмотреть первые N значений массива можно, если в окне контролируемых значений написать x, N

отладчик и динамический массив
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.12.2013, 19:56     отладчик и динамический массив #12
Цитата Сообщение от monochromer Посмотреть сообщение
Посмотреть первые N значений массива можно, если в окне контролируемых значений написать x, N

Вложение 336611
И как это сделать? x - это что? Указатель?
monochromer
398 / 360 / 141
Регистрация: 03.01.2013
Сообщений: 947
03.12.2013, 20:40     отладчик и динамический массив #13
Цитата Сообщение от alsav22 Посмотреть сообщение
И как это сделать? x - это что? Указатель?
x был создан так:

double* x = new double[8];
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.12.2013, 21:23     отладчик и динамический массив #14
Цитата Сообщение от monochromer Посмотреть сообщение
если в окне контролируемых значений написать x, N
Цитата Сообщение от alsav22 Посмотреть сообщение
И как это сделать?
Как такую запись сделать в окне контрольного значения?
monochromer
398 / 360 / 141
Регистрация: 03.01.2013
Сообщений: 947
04.12.2013, 08:19     отладчик и динамический массив #15
Щелкните 2 раза левой кнопкой мыши по названию переменной.
SatanaXIII
Супер-модератор
Эксперт С++
5591 / 2625 / 239
Регистрация: 01.11.2011
Сообщений: 6,454
Завершенные тесты: 1
04.12.2013, 09:43     отладчик и динамический массив #16
Цитата Сообщение от monochromer Посмотреть сообщение
Щелкните 2 раза левой кнопкой мыши по названию переменной.
Ничего не происходит. Вы уверены, что у вас билдер?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.12.2013, 09:54     отладчик и динамический массив #17
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Вы уверены, что у вас билдер?
Я про студию спрашивал. Там работает такой способ.
SatanaXIII
Супер-модератор
Эксперт С++
5591 / 2625 / 239
Регистрация: 01.11.2011
Сообщений: 6,454
Завершенные тесты: 1
04.12.2013, 09:57     отладчик и динамический массив #18
alsav22, я утрирую. Метод monochromer не панацея.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.12.2013, 10:10     отладчик и динамический массив #19
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Метод monochromer не панацея
В каком смысле? Не во всех средах работает?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 10:15     отладчик и динамический массив
Еще ссылки по теме:

Динамический массив - C++
Даны действительные числа а1,..аn Получим:min(a1*a16,a2*a17,..,a15*an) заранее большое спасибо=)))) Добавлено через 3 минуты ...

динамический массив - C++
ктонибуть, напишите пожалуста задачу на динамический массив. ну и само условие, ибо в книге нифига не понятно..может так хоть чтото пайму.

Динамический массив - C++
Надо: Сформировать массив строк, добавить в него строку с заданным номером. Не знаю,как добавить в него строку с заданным номером. ...

Динамический массив - C++
int * pointer=new int; for(int i=0;i<10;i++) { pointer=i; cout<<pointer<<endl; } Почему обращение к элементам...

Динамический массив. - C++
Есть такой момент в программе: ... char *r; int a,b,c,dl_len; ... printf("a= "); scanf("%d",&a); printf("b= "); ...


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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
5591 / 2625 / 239
Регистрация: 01.11.2011
Сообщений: 6,454
Завершенные тесты: 1
04.12.2013, 10:15     отладчик и динамический массив #20
Цитата Сообщение от alsav22 Посмотреть сообщение
Не во всех средах работает?
Ага. Именно так.
Yandex
Объявления
04.12.2013, 10:15     отладчик и динамический массив
Ответ Создать тему
Опции темы

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