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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Календарь текущего месяца http://www.cyberforum.ru/cpp-beginners/thread155552.html
Добрый вечер, вот задали сделать календарь текущего месяца. Сделал. Подскажите можно как-то упростить код??? #include <iostream> using namespace std; void main() { cout<<"\tMon\tTue\tWed\tThu\tFri\tSat\tSun\n"; for(int i=1; i<=7;) {
C++ Указатель void на структуру Есть некий тип структуры action. Для функции _beginthread третьим параметром требуется указатель на void. Как преобразовать структуру в указатель типа void? Если попробовать (void *)pParams пишет: error C2440: приведение типов: невозможно преобразовать 'action' в 'void *' pParams - переменная типа action. http://www.cyberforum.ru/cpp-beginners/thread155547.html
Кто работал с OpenCV? C++
Вопрос в следующем. Нужно реализовать программу, которая будет выделять из изображение необходимый объект (объект лежит на столе, камера снимает сверху). После сегментации высчитать размер этого объекта. Из адекватных инструментов нашел библиотеку Open CV. Но не уверен, подойдет ли она для решения данной проблемы. Вот собственно, сами вопросы: 1) Если ли внятная документация по этой...
C++ Создание cpp файлов
я недавно начал зучать язык программированя С++ и делаю это самостоятельно с помашю книг и интернета. я ищю статьи где было бы подробно описанно для каких функции какие файли создаються например для написания простого математического задания можно использовать файл .cpp, я так понимаю но у меня и с этим тоже проблемы, недавно я открыл "project", в ней файл .срр но когда я в этом же проекте...
C++ Как сделать свою формат-функцию? http://www.cyberforum.ru/cpp-beginners/thread155505.html
навроде void logtofile(const char * _Format, ...) { FILE * pFile; pFile = fopen ("log.txt","a"); fprintf (pFile, formatted_string); fclose (pFile); }
C++ Звуковой сигнал \a Как \a работает в программировании? Приведите пример плз. подробнее

Показать сообщение отдельно
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 пока не пробовал.
Последний пример тоже.

//////

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