Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 04.12.2021
Сообщений: 46

Функция для добавления нового элемента в динамический массив на основе алгоритма сдвига

23.09.2022, 21:36. Показов 486. Ответов 4

Студворк — интернет-сервис помощи студентам
Суть изложена в названии темы. Я написал вот такой код, и он в принципе работает, только выдаёт ошибку: "HEAP CORRUPTION DETECTED: after Normal block (#762) at etc."
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Add(int * ptr_array, int & size, int pos, int new_num)
{
    pos -= 1;
    if (size <= pos)
        return;
    for (int i = size - 1; i >= pos; i--)
    {
        ptr_array[i + 1] = ptr_array[i];
    }
    ptr_array[pos] = new_num;
    size++;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.09.2022, 21:36
Ответы с готовыми решениями:

Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента из массива. (Имитируется “резиновый” массив)
Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента из массива. (Имитируется “резиновый”...

Функция добавления нового элемента в список
Для добавления элементов в конец списка я в функцию AddToList передаю адрес первого элемента и значение нового элемента. В самой функции...

Добавления элемента в динамический массив
ArrayList ar = new ArrayList(); protected void Page_Load(object sender, EventArgs e) { } ...

4
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
23.09.2022, 21:57
FoXoDoX, а место под новый элемент есть ?
0
0 / 0 / 0
Регистрация: 04.12.2021
Сообщений: 46
23.09.2022, 22:02  [ТС]
Ну я подумал, что если я увеличиваю размер динамического массива в конце функции, то место должно появится. В консоль всё выводится как надо, только вот ошибка всё равно выскакивает.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
23.09.2022, 22:21
Я дам вам 20 ящиков, вы их пронумеруете, и запишите на листок бумаге что у вас есть 20 ящиков.
Если вы перепишете 20 на 21, появится ли у вас от этого еще один ящик, 21-ый ?

Добавлено через 54 секунды
Цитата Сообщение от FoXoDoX Посмотреть сообщение
если я увеличиваю размер динамического массива в конце функции, то место должно появится
Вы увеличиваете лишь значение переменной, которая описывает размер массива, сам массив от этого не изменится.

Добавлено через 3 минуты
Что бы добавить элемент в динамический массив, нужно создать новый (выделить память) больший на количество добавляемых элементов, скопировать все элементы до места вставки, записать новый(е) элемент(ы), скопировать оставшуюся часть массива, если есть.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12942 / 6809 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
24.09.2022, 05:42
Цитата Сообщение от FoXoDoX Посмотреть сообщение
Ну я подумал, что если я увеличиваю размер динамического массива в конце функции, то место должно появится.
"Увеличиваю размер динамического массива"? Что именно вы имеете в виду? Где это такое "в конце функции"?

В C++ в принципе нет такой функциональности, как "увеличить размер массива". Невозможно увеличить размер массива. Когда нужно "увеличить" размер массива, у вас есть только один выход: создать новый массив (большего размера) и уничтожить старый массив, предварительно перекопировав данные. В вашем коде ничего подобного не видно.

То есть если в вашем массиве заранее не зарезервировано место для нового элемента, то вы и получите ""HEAP CORRUPTION DETECTED".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.09.2022, 05:42
Помогаю со студенческими работами здесь

Описать процедуру добавления в массив нового элемента после данного
Задано массив указателей на действительные числа. Описать процедуру добавления нового элемента после данного

Реализация добавления нового элемента в массив структур и удаление существующего
Как реализовать в этой программе добавление нового элемента и удаление существующего #include &quot;stdafx.h&quot; #include...

Ошибка при вызове функции добавления нового элемента в массив
Описывается класс Datchik. Затем в классе Lists объявляется массив объектов класса датчик и описывается функция NewDatchik добавления...

Вставка нового элемента в двумерный динамический массив дополнить код
Здравствуйте ребята, опять нужна помощь по вставке элементов в двумерный динамический массив. А именно вставить рядок заполненный числами...

Функция для нового элемента в двусвязный список
Здравствуйте! Целый день пытаюсь понять пытаюсь написать функцию, которая бы добавляла новый элемент в двусвязный список, но тщетно. Не...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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 На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru