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

Ошибка при освобождении памяти массива string - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа должна в себе учитывать 3 вещи: Наследование, Сортировка и Поиск по данным http://www.cyberforum.ru/cpp-beginners/thread1048950.html
Мне через пару дней нужно сдать курсовую работу, а она еще не готова. Я в отчаянье! Кто может у кого есть подобна программа поделитесь пожалуйста. Программа должна в себе учитывать 3 вещи: Наследование, Сортировка и Поиск по данным. Размер программы не важен лишь бы она работала и выполняла определенные функции которые указаны выше. Заранее большое спасибо.
C++ Задача на строки Здравствуйте. Мне на завтра несколько задач нужно дорешать, решила сама уже на нахождение количества разделителей в строке и на матрицы, осталась еще одна, завтра последний день сдачи((( сама признаюсь честно не смогу решить эту задачу. Помогите пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1048949.html
Для автосалона составить каталог поддержанных автомобилей, C++
Извините, просто не успеваю к зачету))) Нужен код программы на C++ Хотя бы похожая программа Вот условие Для автосалона составить каталог поддержанных автомобилей, который должен содержать: 1) марка авто 2) адрес предыдущего владельца 3) пробег
C++ Ошибка в функции!
Господа знатоки, открытое шифрование Эль-Гамаля, функция дешифрования работает не правильно, например я шифрую текст: завтра в 8 часов , задаю параметры p,g,x , идет шифрование , зашифрованное сообщение получается например (7807 29351 1613 15576 9709 12646 20899 28406 2529 1648 31851 26996 16811 22620 6035 11610 3487 6188 28203 2180 15971 12776 16771 20323 25461 5380 6561 28225 12387 33270...
C++ Подключил мультиметр к ПК, нужно считать показатели в с++. http://www.cyberforum.ru/cpp-beginners/thread1048932.html
Доброго времени суток, уважаемые форумчане. Подскажите пожалуйста: есть мультиметр APPA 190n, я подключил его к ПК, и теперь мне нужно считать показатели в с++. То есть мультиметр посылает (мы считываем) знаки (16) в с++, мы обрабатываем его по следующим правилам: -каждая группа знаков (по два знака, первые 6) делится на группы всего групп три, каждая со своим условием, пара принадлежит ко...
C++ Вычислительные процессы, линейные и ветвящиеся Написать коды 1) Линейного процесса 2) Ветвящегося процесса простейшие, вида, 7+4=11 подробнее

Показать сообщение отдельно
Avazart
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,387
Записей в блоге: 17
26.01.2014, 16:04     Ошибка при освобождении памяти массива string
Если еще актуально:

Выделяем "не массив" а пытаемся освободить как массив
C++
1
2
3
4
5
6
template <class Type> // конструктор по значению информационного поля
Array<Type>::Array(Type value): size(1)
{
    theArray = new Type; //  не массив !
    theArray[0] = value;
}
C++
1
2
3
4
5
6
7
8
9
10
11
template <class Type>
void Array<Type>::operator+=(Type value)
{
    Array<Type> tmp(*this);  // лишний объект ?? зачем ?
    delete [] theArray;         // <--- пытаемся удалить как массив !!
    size++; // увеличиваем размер
    theArray = new Type[size]; 
    for (int i = 0; i < size-1; i++) 
        theArray[i] = tmp[i]; 
    theArray[size-1] = value;
}
Т.е. рабочий вариант

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
template <class Type> // конструктор по значению информационного поля
Array<Type>::Array(Type value): size(1)
{
    theArray = new Type[size]; // массив
    theArray[0] = value;
}
 
template <class Type>
void Array<Type>::Add(Type value)
{
    Type* tmp= new Type[++size];
 
    for (int i = 0; i < size-1; ++i)
        tmp[i]= theArray[i]; // копируем уже имеющиеся элементы
    tmp[size-1]= value;
 
    delete [] theArray; // освобождаем память
 
    theArray= tmp;
}
 
 
template <class Type>
void Array<Type>::operator+=(Type value)
{
   Add(value);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru