Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
vadim09
6 / 6 / 0
Регистрация: 04.08.2012
Сообщений: 62
1

Ошибка при удалении динамически выделенной памяти

02.04.2013, 13:57. Просмотров 635. Ответов 3
Метки нет (Все метки)

Добрый день, хочу удалить выделенный массив, но выдает ошибку.
Вот собственно код создаваемой функции.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using namespace std;
void FillStruct(VideoShop *a, int n)
{
    char *buff = new char [100];
    int *buff1;
    int length= strlen(buff)+1;
    a->name = new char *[n];
    a->director = new char *[n];
    a->genre = new char *[n];
    setlocale(LC_ALL, "russian");
    for(int i=0; i<n; i++)
    {
        cout<<"\nНазвание фильма : ";
        gets_s(buff, length);
        a->name[i]=new char [length];
        for(int j=0; j<length; j++)
            a->name[i][j]=buff[j];
        delete[] buff;
        //buff = new char [100];
 
        cout<<"Режиссер : ";
        gets_s(buff, length);
        a->director[i]=new char [length];
        a->director[i]=buff;
        delete[] buff;
        buff = new char [100];
 
        cout<<"\nЖанр  : ";
        gets_s(buff, length);
        a->genre[i]=new char [length];
        a->genre[i]=buff;
        delete[] buff;
        buff1 = new int [100];
 
        cout<<"\nРейтинг популярности : ";
        cin>>buff1[i];
        a->rating=new int [i];
        a->rating[i]=buff1[i];
        delete[] buff1;
        buff1 = new  int [10];
 
        cout<<"\nЦена диска : ";
        cin>>buff1[i];
        a->price=new int [i];
        a->price[i]=buff1[i];
        delete[] buff1;
    }
}
0
Миниатюры
Ошибка при удалении динамически выделенной памяти  
Вложения
Тип файла: zip Source.zip (1.4 Кб, 2 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2013, 13:57
Ответы с готовыми решениями:

Мусор в памяти, выделенной динамически
Есть код, выполняет разархивацию файла, закодированного LZ77. Вот его основная часть: цикл в...

Как склеить два куска динамически выделенной памяти?
Есть такой код char *arr = (char *) malloc(1); char *plus = (char *) malloc(25); arr =...

Ошибка с delete при удалении памяти из-под строки
strngbad.h // strngbad.h -- flawed string class definition #include &lt;iostream&gt; #ifndef...

Как обнулить указатель на одну ячейку в динамически-выделенной памяти?
Выделю память под 10 элементов: int* p = new int; Наполняю значениями: for(int i = 0; i&lt;10; i++)...

Ошибка при высвобождении ранее выделенной памяти под динам. массив
Собственно, в чем суть: //инициализирую bool* delimeters = new bool; ... //Удаляю delete...

3
hofmn
Helter Skelter
62 / 62 / 19
Регистрация: 19.09.2012
Сообщений: 133
02.04.2013, 14:09 2
C++
1
2
3
4
5
void FillStruct(VideoShop *a, int n)
{
    // ... весь код
   delete [] buff; // предыдущие "delete [] buff;" удалить 
}
0
Vourhey
Почетный модератор
6931 / 2450 / 225
Регистрация: 29.07.2006
Сообщений: 13,100
02.04.2013, 14:14 3
Цитата Сообщение от vadim09 Посмотреть сообщение
int length= strlen(buff)+1;
У тебя buff не указывает гарантированно на С-строку. Значение length у тебя не определено и может быть больше, чем размер выделенного буфера. А может и не быть. И баф удаляешь несколько раз.
0
vadim09
6 / 6 / 0
Регистрация: 04.08.2012
Сообщений: 62
04.04.2013, 21:38  [ТС] 4
Цитата Сообщение от Vourhey Посмотреть сообщение
И баф удаляешь несколько раз.
Ошибку выдает на первом удалении. А причем тут length?
Я с buff ничего не делал. Только записал в него строку и всё.
Так что же делать?
0
04.04.2013, 21:38
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 21:38

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка при выделении памяти динамически для структуры
Есть программа. Вылетает ошибка. Если gets(BLOCKNOTE.NAME) заменить на cin&gt;&gt;BLOCKNOTE.NAME все...

Очень долгое освобождение динамически выделенной памяти
Все никак не могу разобраться с одной проблеммой! У меня есть отображение, в котором хранятся...

Утечка памяти при удалении
Здравствуйте! Возникла проблема при удалении последнего элемента из двусвязного списка. Вот...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.