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

Удаление структуры из динамической памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вытащить текст из файла http://www.cyberforum.ru/cpp-beginners/thread155584.html
как в массив закинуть содержимое body? я делаю без регулярных выражений, у меня получается вытянуть body, только если body открывается и закрывается в одной строке до этого читал посимвольно и тот...
C++ Календарь текущего месяца Добрый вечер, вот задали сделать календарь текущего месяца. Сделал. Подскажите можно как-то упростить код??? #include <iostream> using namespace std; void main() { ... http://www.cyberforum.ru/cpp-beginners/thread155552.html
Указатель void на структуру C++
Есть некий тип структуры action. Для функции _beginthread третьим параметром требуется указатель на void. Как преобразовать структуру в указатель типа void? Если попробовать (void *)pParams пишет:...
Кто работал с OpenCV? C++
Вопрос в следующем. Нужно реализовать программу, которая будет выделять из изображение необходимый объект (объект лежит на столе, камера снимает сверху). После сегментации высчитать размер этого...
C++ Создание cpp файлов http://www.cyberforum.ru/cpp-beginners/thread155510.html
я недавно начал зучать язык программированя С++ и делаю это самостоятельно с помашю книг и интернета. я ищю статьи где было бы подробно описанно для каких функции какие файли создаються например для...
C++ Как сделать свою формат-функцию? навроде void logtofile(const char * _Format, ...) { FILE * pFile; pFile = fopen ("log.txt","a"); fprintf (pFile, formatted_string); fclose (pFile); } подробнее

Показать сообщение отдельно
AspUser
0 / 0 / 0
Регистрация: 25.07.2010
Сообщений: 3
12.08.2010, 12:05  [ТС]
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
void DeleteTape(aTapeElement *TapeRoot)
{
/*
* Если удалять через ссылки (&),
* в частности операнд,
* то происходит ошибка в распределении памяти.
* Если сослаться структуру или массив структур,
* то из памяти удаляются лишь первый (или все) оператор(ы).
* Удаление через укаазтели (*) нереально.
* Компилятор пишет, что неверный аргумент для unary.
*/      
    if (TapeRoot != NULL)
    {
        aTapeElement *DeleteTapeRoot = TapeRoot; // Создаём ссылку для попытки удалить структуру с данными.
        
/*      delete [] DeleteTapeRoot; // Попытка удалить как массив структур.
 *      // Удаляет только оператор. Операнд не удаляет.
 */
 
/*      delete DeleteTapeRoot; // Попытка удалить как структуру.
 *      // Удаляет только оператор. Операнд не удаляет.
 */
        
/*      DeleteTapeRoot->Operator = NULL; // Попытка обнулить опаратор
 *      DeleteTapeRoot->Operand = NULL; // Попытка обнулить операнд
 *      // Опаранд = 0. Неудача.
 */
        
        (*DeleteTapeRoot).~aTapeElement(); // Вызывается деструктор.
        
            Accumulator(reset); // Обняляем сумматор.
    }
    
    /*
     * Если лента не наполнена,
     * то нужно об этом доложить.
     */
    
    else
    {
        cout << "Лента пока не наполнена. " << endl;
    };
    
    
};



//////////////////////////////////////////////////


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
struct aTapeElement
{
    
    char Operator;
    float Operand;
    aTapeElement *NextElement;
    
    ~aTapeElement(void) // Деструктор.
    {
        NextElement = NULL;
        
        Operator = '*';
        Operand = 0;
 
/* У меня не получилось удалить первые элементы структуры,
 * как и саму структуру из динамической памяти,
 * однако я поступил хитрее, перезаписав значения первого оператора и
 * первого операнда, придал значение NULL следующему элементу и
 * лента стала перезаписываться, хоть и не с самого начала.
 * Теперь нужно выяснить: Что же делается с памятью ?
 * Не произойдёт ли переполнение буфера.
 */
    };
 
};

/////


В моём случае удаление через указатели не удалось.
Слишком сложная программа, наверное.
malloc.h пока не пробовал.
Последний пример тоже.

//////

Скажите.
Мой пример сможет замещать содержимое ячеек памяти или он тупо создаёт новые и
происходит учетчка памяти ?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru