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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка односвязного списка http://www.cyberforum.ru/cpp-beginners/thread894258.html
ребят, нужна помощь, учусь на втором курсе для зачета нужно написать сортировку односвязного списка. а мы такого рода программы не изучали... список должен быть в отдельном файле список Head:2 № Фамилия Имя Факультет Курс Группа Год_рождения Next 1 Афанасьев Сергей ЭК 2 01-11 1994 3 2 Михайлов Андрей ДиКТ ...
C++ true and false Уважаемые, программисты! Помогите, пожалуйста, с программой. Написать программу, которая печатает True или False в зависимости от того, выполняются или нет заданные условия: - квадрат заданного трехзначного числа равен кубу суммы цифр этого числа; - сумма двух первых цифр заданного четырехзначного числа равна сумме двух его последних цифр; - среди цифр заданного трехзначного числа есть... http://www.cyberforum.ru/cpp-beginners/thread894253.html
найти простые числа и поменять столбики местами C++
Характеристикой столбца целочисленной матрицы назовем сумму его элементов,являющихся простыми числами. Упорядочить столбцы матрицы по убыванию характеристик. Помогите пожалуйста!
CUDA: Как учитывать ограничение в памяти видухи? Дайте совет по идеологии вычислений! C++
Вопрос 1: Опишу простую задачу и способ ее решения. Я мануал конечно читал, но мне нужен совет по реализации вычислений на CUDA. Допустим, есть N штук ядер на видухе, есть матрица A, где n-количество строк матрицы(четное количество), а m-количество столбцов матрицы. Нужно сложить попарно строки матрицы А. Предполагается, что N<n.Т.е. на выходе получаем матрицу B, где n/2 - количество строк, m...
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

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