Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указатели, Помогите разобраться с указателями 
:(
    Опции темы
necrom
Дата 6.8.2011, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 21.2.2011

Репутация: нет
Всего: нет



Кажись понял  smile 
Последний вопрос smile 
Код

int ***a=new int **[dp];
for ( int i=0;i<dp;i++)
{
    a[i]=new int *[n];
    for ( int j=0;j<n;j++)
        a[i][j]=new int [m]; 
}

Чтоб удалить зарезервированную память нужно написать delete **a;
PM MAIL   Вверх
volatile
Дата 6.8.2011, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



До этого нужно примерно таким же циклом, но в обратной последовательности удалить все вложенные массивы. В общем на каждый new []; => свой delete [];

Цитата(necrom @  6.8.2011,  01:06 Найти цитируемый пост)
Чтоб удалить зарезервированную память нужно написать delete **a; 

delete [] a;

PM MAIL   Вверх
aleks88
Дата 3.10.2011, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.8.2011

Репутация: нет
Всего: нет



Код

class Counter {
public:
    Counter() { pVal=new int; *pVal=0;};
    //Counter (Counter &rhs){*pVal=rhs.GetItsVal();};
    ~Counter() {}
    int GetItsVal(){return *pVal;}
    void SetItsVal(int x) {*pVal=x;}
    //void Increment(){++*pVal;}
    Counter operator++() {++*pVal; int p=*pVal;  Counter temp; temp.SetItsVal(p); return temp;}
        
private:
    int *pVal;
};

int main()
{ 
    Counter a1; Counter a2; 
    a1=++a2;
    
    return 0;
}



В чем ошибка в перегрузке оператора ? При запуске зависает...  Когда в качестве переменного-члена класса использую целочисленную переменную, а не указатель, все норм. Тогда правда и перегрузка оператора иная...

Это сообщение отредактировал(а) aleks88 - 3.10.2011, 17:40
PM   Вверх
bsa
Дата 3.10.2011, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



aleks88, во-первых, где delete в деструкторе? Кстати, конструктор можно упростить: pVal = new int(0);
во-вторых, необходим конструктор копирования - без него return temp делать нельзя (ошибка вылезет, как только ты в деструктор добавишь delete).
в-третьих, вот эту "порнографию":
Код
Counter temp; temp.SetItsVal(p); return temp;
следует заменить на:
Код
return *this;

в-четвертых, сигнатура префиксного оператора ++ должна быть такой: Counter& operator++();

Почему зависает я не знаю. По идее в данном виде должно работать, но с утечками памяти (ты теряешь три участка памяти).

Это сообщение отредактировал(а) bsa - 3.10.2011, 23:13
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.