|
0 / 0 / 0
Регистрация: 15.02.2009
Сообщений: 11
|
||||||||||||||||
Удаление динамического массива05.03.2009, 21:09. Показов 117249. Ответов 39
Метки нет (Все метки)
Здравствуйте!
Имею следующий вопрос: создаётся массив таким образом:
Чем грозит второй вариант?
0
|
||||||||||||||||
| 05.03.2009, 21:09 | |
|
Ответы с готовыми решениями:
39
Удаление динамического массива Удаление динамического массива Удаление динамического массива |
|
2 / 2 / 0
Регистрация: 16.08.2020
Сообщений: 25
|
|||||||||||
| 20.08.2020, 14:22 | |||||||||||
|
Я пробовал создавать примерно аналогичные программы, они никогда не выбивают ошибки, но они при этом удаляют все элементы массива. Например
почему первая сносит только указатель? Nishen, спасибо, я понимаю, что так лучше, но сейчас просто пытаюсь разобраться, как это все работает
0
|
|||||||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 20.08.2020, 19:50 | ||
|
Добавлено через 2 минуты Или не разбираться, а просто пользоваться тем, что разрешено делать.
0
|
||
|
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
|
|||
| 20.08.2020, 23:16 | |||
|
Добавлено через 20 минут
1
|
|||
|
2 / 2 / 0
Регистрация: 16.08.2020
Сообщений: 25
|
|||
| 21.08.2020, 13:23 | |||
|
На счет удаления указателей разобрался: просто char занимает 1 байт, int 4 а указатель 8 поэтому, в остальном все происходит совершенно одинаково.
0
|
|||
|
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
|
||||
| 21.08.2020, 13:27 | ||||
|
вы знаете как оно происходит? y к памятиувеличение памяти можно сделать только одним способом: 1. Выделяем новое кол-во памяти 2. Копируем из старого указателя в новую память 3. Чистим старый указатель, меняем значение указателя на новую память Добавлено через 36 секунд y, по факту вы обращаетесь к не выделенной памяти
1
|
||||
|
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
|
|
| 21.08.2020, 13:29 | |
|
При очищении памяти в вашем коде у меня вообще ошибка (вложение)
1
|
|
| 21.08.2020, 13:32 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 16.08.2020
Сообщений: 25
|
|||
| 21.08.2020, 13:51 | |||
|
Спасибо большое, у меня сейчас все сложилось в единый пазл наконец. Про выделение памяти знаю не достаточно, как оказалось.
0
|
|||
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 213
|
||
| 10.09.2025, 17:58 | ||
|
0
|
||
|
Заблокирован
|
||
| 10.09.2025, 18:39 | ||
|
Безопасность данных полностью в ответственности программиста. Если предположить что это так, то при выделении или освобождении памяти, мы бы наблюдали заметные лаги при работе приложения. Потому как системе нужно было очистить эту страницу/ы памяти. И зачем это делать? Если говорить об ОС windows?, я нашел несколько функций(хотя и не копал глубкок) при которой выделенная память инициализируется нулями : ExAllocatePool2 и ExAllocatePoolPriorityZero ... . В остальных случаях память будет получена неинициализированной. Майкрософт прямо рекомендуют затирать данные самостоятельно. Всё это функции для драйверов и системы. Как именно обстоят с менеджером памяти С++ нужно изучать отдельно. Но я бы сильно удивился если бы кто то тратил ресурсы моей программы на затирание непонятно чего нулями. А про то что выделенная память после освобождения затирается, слышу вообще впервые.
1
|
||
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 213
|
|
| 10.09.2025, 19:13 | |
|
SmallEvil, потому и уточняю. После освобождения конечно никогда само ничего не затирается. Предполагал только что при выделении этой памяти для другого процесса сама система может её чистить, в момент выделения. Уже не помню откуда такое поверье было)
0
|
|
|
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,890
|
||||||
| 10.09.2025, 23:53 | ||||||
|
При очистке, указатель должен стоять на своём месте.....
Если ты его инкреминировал например на десять и забыл поставить на место, будет heap korruption... Что бы ездить по массиву, нужен ещё один указатель... Добавлено через 4 минуты calloc(): Назначение: calloc (непрерывное выделение) выделяет память для массива элементов и инициализирует все байты в выделенном блоке нулем. Синтаксис: void* calloc(size_t num, size_t size); Возвращаемое значение: возвращает void*указатель на выделенный блок памяти или возвращает его, NULLесли выделение не удалось. Инициализация: выделенная память инициализируется нулем. Пример:
Примерчик взял у интелекта, но я помню. Я люблю пользовать эту функцию.
0
|
||||||
|
1062 / 983 / 153
Регистрация: 10.08.2015
Сообщений: 5,334
|
|
| 11.09.2025, 01:54 | |
|
0
|
|
|
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,890
|
|
| 11.09.2025, 02:10 | |
|
Хочешь так опиши, если такой принципиальный.
Тоже от того самого интелекту. Я просто привёл функцию, которая заполняет нулями выделенную память.
0
|
|
|
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,890
|
|
| 11.09.2025, 02:39 | |
|
Все учатся по этому самому интелекту.....
Пропали все ваши строгие правила, уважаемые хранители строгих правил. Этот интелект не особо заботиться об соблюдении плюсового закона. Так же и С++ 17 + пропал, что то не вижу давно.... А мне легче. Я не такой принципиальный. Я и на сях могу.
1
|
|
|
6136 / 2830 / 1039
Регистрация: 01.06.2021
Сообщений: 10,324
|
||
| 11.09.2025, 11:29 | ||
|
Наталья8, да, в С++ в <cstdlib> есть
calloc, а вернее std::calloc. Есть и std::free и std::realloc. ОДНАКО, в языке С++ рекомендовано использовать new / delete, а также предпочитать контейнеры, а не массивы через указатели. В С++ по умолчанию нужно писать в стиле С++, и только при объективной необходимости использовать C-style.
0
|
||
|
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,890
|
||
| 11.09.2025, 14:12 | ||
|
Ну согласись, сишные функции более гибкие.
Мне больше нравяться. Добавлено через 5 минут Люди бывают разные, книжки пишут, что бы денег заработать. И каждый кулик своё болото хвалит. Почитай рекомендации по C++ CLI... Там чётко обосновано, почему С++ гавно, а ихняя разработка золото. (Уборка мусора, выстрелы в ногу, и так далее)
0
|
||
|
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,890
|
|
| 11.09.2025, 14:26 | |
|
0
|
|
|
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,890
|
||
| 11.09.2025, 14:28 | ||
|
(Как выбито на камне... Мне не кажутся контейнеры как выбитые на камне. Я их изнутри не вижу, и под капотом букоф наверное дохрена.. Не люблю когда много букоф) Контейнер может быть многофункциональный, это же хорошо.... А зачем мне его многофункциональность? Излишество... Вот этот лишний функционал. ----------, вообще столько последнее время всего рекомендовано. И не рекомендовано. Своей головой надо думать.
0
|
||
|
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,890
|
|
| 11.09.2025, 18:27 | |
|
Ну да... Если эти расширенные тебе необходимы.... А если и суженными обходишься, зачем зря голову морочить...
0
|
|
| 11.09.2025, 18:27 | |
|
Помогаю со студенческими работами здесь
40
Удаление динамического массива Удаление динамического массива Удаление динамического массива Удаление динамического массива Удаление динамического массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|