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

Проблемы с delete [], программа периодически аварийно завершается на строке с освобождением памяти. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Переписать код, без использования sstream и algoritm http://www.cyberforum.ru/cpp-beginners/thread539946.html
#include "stdafx.h" #include <iostream> #include <sstream> #include <algorithm> #include <string> bool isGood(const std::string& s, size_t margin){ for ( std::string::const_iterator i = s.begin(); i != s.end(); ++i ) if ( std::count(s.begin(), s.end(), *i) > margin ) return true;
C++ Разработка алгоритмов поиска в массивов [Задача] Всем привет. Кто поможет написать задачку? Дано натуральное число n. Выяснить, сколько положительных элементов содержит массив А , если aij = sin (i + j / 2). Заранее благодарен. http://www.cyberforum.ru/cpp-beginners/thread539925.html
C++ Зданы координаты вершин четырёхугольника. Определить его тип:прямоугольник , паралелограм, трапеция , квадрат, произвольный
Зданы координаты вершин четырёхугольника. Определить его тип:прямоугольник , паралелограм, трапеция , квадрат, произвольный. Помогите написать программу пожалуйста. Добавлено через 4 часа 55 минут подскажите как решать хотябы её.формулы.признаки.
C++ Хэлп с функциями
1.Написать функцию, которая умножает поэлементно 2 массива. Параметрами функции должны быть оба массива и массив, в который записывается результат. (ХЭЭЛП)
C++ Во входном потоке определить число слов содержащих цифры. http://www.cyberforum.ru/cpp-beginners/thread539916.html
Во входном потоке определить число слов содержащих цифры. Под словом понимать любую последовательность из символов , за исключением разделителей. Разделители : пробел, символ горизонтального табулирования , символ перехода на новую строку.
C++ Непонятная ошибка при вызове std::vector::resize Недавно заметил непонятную ошибку при вызове метода resize(); Я так и не понял как правильно создавать таблицы с динамически изменяющимися размерами строк и столбцов. Ошибка в методе // метод для одновременного изменения void matrix::resize(unsigned col_count,unsigned row_count) { this-> vector<vector<string> >::resize(col_count); for(unsigned c=0; c< col_count;c++)... подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
06.04.2012, 14:34     Проблемы с delete [], программа периодически аварийно завершается на строке с освобождением памяти.
stanis-morozov, программа может падать при delete, если где-то выше был выход за границы динамически выделенной памяти. Поверьте это.

Добавлено через 3 минуты
stanis-morozov, да и способ перевыделения у вас громоздкий. обычно делают так:
C++
1
2
3
4
5
6
7
8
9
int *new_array = new int [new_length];
 
for (size_t i = 0; i < old_length; ++i)
    new_array[i] = old_array[i];
 
delete [] old_array;
 
old_array = new_array;
old_length = new_length;
Но всё-таки совет "использовать std::vector" самый верный.
 
Текущее время: 11:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru