|
5 / 5 / 8
Регистрация: 06.04.2013
Сообщений: 103
|
|
Если выделение памяти для динамического массива задать void-функцией, можно ли будет оперировать с ним в main?10.08.2014, 18:00. Показов 3343. Ответов 40
Метки нет (Все метки)
Если выделение памяти для дин.массива задать void-функцией, можно ли будет оперировать с ним в main или придётся отдельно выделять память в main?
0
|
|
| 10.08.2014, 18:00 | |
|
Ответы с готовыми решениями:
40
Выделение памяти для динамического массива
Использование типа void в качестве возвращаемого значения функцией main |
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||
| 11.08.2014, 08:54 | ||||||
|
вставлю свои 5 копеек
![]()
1
|
||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 11.08.2014, 10:30 | ||
|
1. В общем случае тип T нельзя копировать через memcpy, т.к. происходит поверхностное (shallow) копирование, т.е. если например T содержит указатель на данные, скопируется только указатель. 2. Нет проверки на ptr == NULL, т.е. в 5 строке может быть UB. 3. Параметр ptr больше связан с old_size, т.о. его хорошо бы перенести ближе к конце, и так же как для old_size задать умолчание. 4. Нет проверки, что old_size <= new_size. Т.е. можем получить выход за границы. 5. Вместо allocate больше похоже на reallocate.
1
|
||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|||||||||||
| 11.08.2014, 10:44 | |||||||||||
0
|
|||||||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||||||||
| 11.08.2014, 10:50 | ||||||||||||
0
|
||||||||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||||
| 11.08.2014, 11:05 | |||||
|
1
|
|||||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 11.08.2014, 11:13 | ||
|
sterkh, а какая вообще разница, кто выделил память?
Добавлено через 3 минуты Добавлено через 1 минуту sterkh, кстати, про фунции mallic, realloc, calloc слышал?
0
|
||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|||||||||||
| 11.08.2014, 11:50 | |||||||||||
а чем тогда можно копировать такие вещи?
0
|
|||||||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 11.08.2014, 11:57 | ||
|
Перемещать - http://www.cplusplus.com/reference/algorithm/move/ Что не отменяет необходимость наличия соответствующих конструкторов/операторов.
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||||||
| 11.08.2014, 11:59 | |||||||
0
|
|||||||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 11.08.2014, 12:03 | |||
|
Добавлено через 3 минуты
0
|
|||
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|||
| 11.08.2014, 12:29 | |||
![]() Не по теме: Случайно поставил 'спасибо', как-нибудь можно убрать? Добавлено через 5 минут
0
|
|||
| 11.08.2014, 12:39 | |
|
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 11.08.2014, 12:47 | ||
|
0
|
||
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
|
||
| 11.08.2014, 12:54 | ||
|
Если prt недействительный (память не выделилась), то разыменование (получение значения по адресу) вызовет глюк. Т.е. проверять действительность ptr через разыменование нельзя. Можно создать метод проверки действительности ptr (если ptr не действителен, то он будет возвращать false). В результате разыменование не понадобится. Только мне не понятно, как этот метод должен выглядеть.
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 11.08.2014, 13:27 | |||
|
Добавлено через 1 минуту Добавлено через 1 минуту Кроме того, если по указателю кратности пять копировать не сами данные, а тройной указатель, то адресация будет двойной косвенности, а используемый указатель свою кратность сохраняет.
0
|
|||
|
Модератор
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
|
||
| 11.08.2014, 13:29 | ||
|
А если в prt сидит не нуль, а мусор?
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||
| 11.08.2014, 13:32 | |||||||
0
|
|||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||
| 11.08.2014, 13:58 | |||
|
Из стандарта, например в 4.4/4:
2
|
|||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 17.08.2014, 07:50 | |
|
0
|
|
| 17.08.2014, 07:50 | |
|
Помогаю со студенческими работами здесь
40
Как задать размеры массива пользователем, не используя динамическое выделение памяти Прошу объяснить, почему перед функцией main, которая ничего не возращает, мы должны писать int, а не void? что плохого если я делаю ф-ю main типа void Как в отдельной функции выделить память для динамического массива, объявленного в main Вызов функции динамического выделение памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает
Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|