|
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 24
|
||||||
Есть динамический массив с размерностью 5, необходимо его сделать с размерностью 6, заполнить цифрами и вывести на экран27.03.2014, 18:16. Показов 1831. Ответов 18
Метки нет (Все метки)
День добрый.
Не хочется никому морочить голову дурацкими вопросами, поэтому стараюсь находить на все свои вопросы ответы сам. Но тут я столкнулся с совершенно непонятной для меня проблемой и решение ее нигде не могу найти. Когда я запускаю выполнение программы на экран выводится полная ерунда , но если запустить отладчик все нормально и на экран выводятся данные динамического массива. Из-за чего такое может происходить? Голову ломаю второй день. Задача следующая - есть динамический массив с размерностью 5, необходимо его сделать с размерностью 6, заполнить цифрами и вывести на экран. Код, который внизу, при запуске отладчика все отлично выводит на экран, а при запуске программы выводить ерунду. Буду очень благодарен если кто-то натолкнет на решение проблемы. Пользуюсь стандартным инструментарием microsoft visual studio 2010
Если просто заполнить массив данными , то все ОК и в отладчике и в запуске программы, если сделать как в коде вверху, то в отладчике ОК , а при запуске программы нет.
0
|
||||||
| 27.03.2014, 18:16 | |
|
Ответы с готовыми решениями:
18
Сформировать динамический двумерный массив, заполнить его случайными числа-ми и вывести на экран монитора. Добавить строку в начало матрицы |
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
||||||||||||||||||||||
| 27.03.2014, 18:41 | ||||||||||||||||||||||
|
но по моему нарушен приоритет, не увеличиваешь значение а увеличиваешь адрес по аналогии
вот так
а лучше пользуйся не указателем а ссылкой
0
|
||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 24
|
|
| 27.03.2014, 21:49 [ТС] | |
|
Нет , не помогает.
И если я иду именно по шагам в отладчике, то все работает и указателем и ссылкой. Но только я запускаю программу на экран выводится как будто массив не заполнен.
0
|
|
|
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 24
|
|
| 27.03.2014, 22:09 [ТС] | |
|
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 27.03.2014, 22:10 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 24
|
|
| 27.03.2014, 22:20 [ТС] | |
|
Это наверно проблема в моем microsoft visual studio 2010?
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||||||||
| 27.03.2014, 22:27 | |||||||||
|
CheburatorUA, Обратив внимание, что ты скопировал указатель в функцию. Снаружи осталось старое значение. А новый массив выделился в совершенно новом месте. Попробуй вот такой код, он должен работать правильно:
Добавлено через 5 минут
2
|
|||||||||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||
| 27.03.2014, 22:37 | |||
|
Добавлено через 3 минуты Как в особождённой памяти оказываются данные из памяти под другим массивом?
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||
| 27.03.2014, 22:43 | |||
|
1
|
|||
|
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 24
|
|
| 27.03.2014, 22:46 [ТС] | |
|
Да, такой код заработал, спасибо.
Вот только тогда почему если делать пошагово в отладчике, то все работает, я даже выше скришнот прикрепил. А у alsav22 вообще все получилось с моим кодом, мистика). Еще раз спасибо за работающий код.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 27.03.2014, 22:48 | ||
|
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||
| 27.03.2014, 22:51 | |||
|
при релизе идет оптимизация и результирующий код совершенно не похож на исходный попробуй отключи оптимизацию и проверь на четыре раза пересмотрел и не заметил
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 27.03.2014, 22:52 | ||
|
UPD: проверил у себя, так и есть - адреса равны, в итоге все работает. При чем даже в релизе. Но это случайность.
1
|
||
|
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 24
|
||
| 27.03.2014, 23:14 [ТС] | ||
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 27.03.2014, 23:20 | |
|
CheburatorUA, ключевое слово "копия"
Ты записал новое значение от new в копию. А исходное, которое ты передавал осталось старым (и уже невалидным, т.к. был delete[]). Так получилось что new вернул тот же самый адрес, в итоге ничего не сломалось.
0
|
|
|
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 24
|
|
| 31.03.2014, 00:23 [ТС] | |
|
Как-то странно все равно. В моей версии в main проинициализировали указатель, затем под этот указатель выделена память для массива. Указатель передан в функцию, затем по этому указателю память удалена и снова выделена, но на одну ячейку больше. Ну выделена эта память в копии т.е. в функции, но ведь указатель не поменялся и память выделена. Перечитав довольно много литературы я так понял , что указатели именно для таких ситуаций и существуют, а тут оказалось, что необходимо еще дополнительно и ссылку указывать.
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||
| 31.03.2014, 00:33 | |||||
Сообщение было отмечено CheburatorUA как решение
РешениеПри выделении новой памяти, адрес этой памяти записыается в сам указатель, т.е. меняются уже не данные, адрес которых находится в указателе, а сам этот адрес (значение указателя), и меняется он в копии, а не в том указателе, который был в main().
2
|
|||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 31.03.2014, 00:49 | ||
|
2
|
||
|
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 24
|
|
| 31.03.2014, 13:37 [ТС] | |
|
Спасибо за пояснения. Теперь я понял. А то я не мог сам понять, меня как заклинило на этом указателе.
0
|
|
| 31.03.2014, 13:37 | |
|
Помогаю со студенческими работами здесь
19
Массив размерностью 100 заполнить случайными числами
Создать массив размерностью 7 х 7, заполнить его случайным образом цифрами Заполнить и вывести на экран массив размерностью 5 квадратами номеров элементов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|