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

Как проверить, быль ли удалён указатель или нет? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка односвязного списка http://www.cyberforum.ru/cpp-beginners/thread894258.html
ребят, нужна помощь, учусь на втором курсе для зачета нужно написать сортировку односвязного списка. а мы такого рода программы не изучали... список должен быть в отдельном файле список Head:2 № ...
C++ true and false Уважаемые, программисты! Помогите, пожалуйста, с программой. Написать программу, которая печатает True или False в зависимости от того, выполняются или нет заданные условия: - квадрат заданного... http://www.cyberforum.ru/cpp-beginners/thread894253.html
найти простые числа и поменять столбики местами C++
Характеристикой столбца целочисленной матрицы назовем сумму его элементов,являющихся простыми числами. Упорядочить столбцы матрицы по убыванию характеристик. Помогите пожалуйста!
CUDA: Как учитывать ограничение в памяти видухи? Дайте совет по идеологии вычислений! C++
Вопрос 1: Опишу простую задачу и способ ее решения. Я мануал конечно читал, но мне нужен совет по реализации вычислений на CUDA. Допустим, есть N штук ядер на видухе, есть матрица A, где...
C++ Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки http://www.cyberforum.ru/cpp-beginners/thread894233.html
Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки.
C++ Из заданного на плоскости множества точек выбрать три различные точки Из заданного на плоскости множества точек выбрать три различные точки так, чтобы разность между площадью круга, ограниченного окружностью, проходящей через эти три точки, и площадью треугольника с... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
07.06.2013, 13:13
1-е говорил я прибилизительно о таком случае
(т.е написали класс, деструктор не сделали либо сделали бездумно и про очистку забыли, можно раскоментить деструктор, а у нас так добрая половина форума пишет) как и говорил - алокнутая мемори при неправильном либо отсутсвующем деструкторе никуда не денется - это я о
C++
1
cout<<ptr<<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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
using namespace std;
 
class test
{
private :
    char * ptr;
public  :
      test();
     //~test();
     bool init();
     bool init(const char *str);
     bool show();
     void rset();
     char * pointer(){return ptr;};
};
 
test::test()
{
    ptr = new char[8];
}
 
/*test::~test()
{
    //
}*/
 
bool test::init()
{
    bool bInit = ptr != NULL;
    if( bInit )
        strcpy(ptr, "test");
    return bInit;
}
 
bool test::init(const char * str)
{
    bool bInit = str != NULL;
    if( bInit )
        strcpy(ptr, str);
    return bInit;
}
 
bool test::show()
{
    bool bShow = ptr != NULL;
    if( bShow )
        cout<<ptr<<endl;
    return bShow;
}
 
void test::rset()
{
    if( ptr )
        delete [] ptr;
}
 
int main()
{
    test * x = new test();
    test * y = x;
    x->init("bla bla");
    x->show();
    char * ptr = x->pointer();
    x->~test();
    x->~test();
    delete x;
    x = NULL;
    cout<<ptr<<endl;
    if(!x)
        cout<<"x - empty"<<endl;
    cin.get();
    return 0;
}
http://codepad.org/1Fj6Mhjr

2-е на счёт деструктора вызывать его можно - это такой же метод как и все остальные,
если написан умно то его вызов хоть 200 раз ни к чему ужастному кроме как очистке памяти и обнулению объектов не приведёт (конечно же для существующего объекта)

Смысл того что я закладывал свой ответ сводился к такому
Если пишем классы работающие с памятью то лучше предусмотреть спец метод по очистке памяти, а не делать чистку в деструкторе. Этими же методами можно будет производить "перезапуск класса" посредством очистки старой мемори и выдления новой в методе инициализации.
Я предпочитаю писать с явным членом класса а не динамическим. Тогда нет никаких двусмысленностей и прочих ньюансов.
Некотрые ответы в данной теме меня явно позабавили. Кроме цели помочь я ничего не приследовал, не понятен мой ход мыслей и кажется неверным - ну ок. Я решил написать, а то не дай бог кто то тут за слив посчитает моё выполнение рабочих обязанностей в результате чего пишу с задержкой.

Не по теме:

ЗЫ На счёт NULL - вот что это за деф в студии

C++
1
2
3
4
5
6
7
8
9
/* Define NULL pointer value */
 
#ifndef NULL
#ifdef  __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif

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