Форум программистов, компьютерный форум 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++ Хотя бы похожая программа Вот условие Для автосалона составить каталог поддержанных автомобилей, который должен содержать: ...
C++ Ошибка в функции!
Господа знатоки, открытое шифрование Эль-Гамаля, функция дешифрования работает не правильно, например я шифрую текст: завтра в 8 часов , задаю параметры p,g,x , идет шифрование , зашифрованное...
C++ Подключил мультиметр к ПК, нужно считать показатели в с++. http://www.cyberforum.ru/cpp-beginners/thread1048932.html
Доброго времени суток, уважаемые форумчане. Подскажите пожалуйста: есть мультиметр APPA 190n, я подключил его к ПК, и теперь мне нужно считать показатели в с++. То есть мультиметр посылает (мы...
C++ Вычислительные процессы, линейные и ветвящиеся Написать коды 1) Линейного процесса 2) Ветвящегося процесса простейшие, вида, 7+4=11 подробнее

Показать сообщение отдельно
Avazart
Нарушитель
Эксперт С++
7233 / 5405 / 294
Регистрация: 10.12.2010
Сообщений: 23,956
Записей в блоге: 17
26.01.2014, 16:04
Если еще актуально:

Выделяем "не массив" а пытаемся освободить как массив
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);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru