Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
5 / 5 / 3
Регистрация: 12.03.2014
Сообщений: 341
1

Правильное удаление массива по указателю из списка

07.01.2016, 12:26. Просмотров 440. Ответов 1
Метки нет (Все метки)

Не удаляется массив символов в структуре. Комментарий в коде удаления.

Структура:

Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
struct pointDir
{
    char *data;
    pointDir *next;
};


Создаю так:

Кликните здесь для просмотра всего текста

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
char *generateCharArray(char *chArr, int num)
{
    char *buf = new char [MAX_LENGTH_OF_STRING];
    char numBuf[MAX_LENGTH_OF_STRING];
    clearArray(&buf[0]);
    clearArray(&numBuf[0]);
    strcat(buf, chArr);
    itoa(num, numBuf, 10);
    strcat(buf, numBuf);
 
    return &buf[0];
}
 
pointDir *createAndFillDirList(int n)
{
    pointDir *beg;
    pointDir *p;
    pointDir *r;
 
    char chArr[] = "Text ";
 
    beg = new pointDir;
    beg -> data = generateCharArray("Text ", 0);
    beg -> next = 0;
    p = beg;
    for(int i = 0; i < (n - 1); i++){
        r = new (pointDir);
        r -> data = generateCharArray(&chArr[0], (i + 1));
        r -> next = 0;
        p -> next = r;
        p = r;
    }
 
    return beg;
}


Удаляю вот так:

Кликните здесь для просмотра всего текста

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
void deleteDirList(pointDir *pDir)
{
    pointDir *pd;
    pointDir *pr;
    char *buf;
 
    pd = &pDir[0];
 
    while (pd -> next != 0){
        pr = &pd[0];
        pd = pd -> next;
        buf = pd -> data;
        cout << "buf = " << buf << endl; //Вывод "Text 1"
        delete[] buf;
        cout << "bufRemove = " << buf << endl; //Вывод "Text 1" Почему не удалил?
        //delete[] buf;
        //delete[] pd;
    }
 
    buf = pd -> data;
    //delete[] buf;
    //delete[] pd;
 
    return;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2016, 12:26
Ответы с готовыми решениями:

Правильное удаление динамического двумерного массива
Доброго времени суток форумчани. Ну в общем перейду сразу к делу. О себе: сам пишу на JAVA...

Правильное удаление массива объектов внутри другого объекта
Есть, предположим, два класса: struct vec { int* vector; vec(int lengt) { vector =...

Правильное удаление двумерного динамического массива ( нужен ли delete[] array )
В одном из постов форума Увидев код одного из участников форума: Я пришел в замешательство,...

Удаление объекта по указателю
Как удалить объект по shared_ptr? с обычным можно было free(ptr), а тут не понятно. И как...

1
1378 / 405 / 144
Регистрация: 22.10.2014
Сообщений: 872
07.01.2016, 13:00 2
C++
1
2
3
4
5
6
7
    while (pd){
        delete[] pd -> data;
        cout << "bufRemove = " << pd -> data << endl; //Потому что память не чистится при удалении, и ОС не отобрала пока ещё доступ к этой области памяти, но на последнее закладываться нельзя.
        pointDir *pr = pd;
        pd = pd -> next;
        delete pr;
    }
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2016, 13:00

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

Удаление строки по указателю
Прошу прощения за столь глупый вопрос: как удалить строку по указателю. Т.е. char *s = new char;...

Написать код программы, выполняющей растяжку списка и вставку, удаление из списка и сжатие списка
Люди ПОМОГИТЕ осталось совсем мало , мне нужна помощь!!! написать код программ: 1) Написать код...

Как правильно организовать удаление объекта по указателю?
Конечно тема избитая, и я находил много решений, но проверить удаляються ли объекты не могу. Есть...

Как просмотреть элементы списка по указателю на них
Правельно ли я понимаю? Напремер, каждому введеному мною элементу(сколько бы они не весили)...

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

Правильное удаление пользователя
Доброго времени суток! Имеется следующая проблема: после удаления пользователя из АК в группах...


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

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

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