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

new - delete - C++

Восстановить пароль Регистрация
 
Nalale
 Аватар для Nalale
3 / 3 / 0
Регистрация: 19.03.2013
Сообщений: 34
12.06.2013, 14:54     new - delete #1
Добрый день. Выделяю память для записи 10 значений координат точки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
class point
{
public:
    float x;
    float y;
};
 
int main()
{   
    point  *cent = new point[10];
    for(int l = 0; l < 10; l++, cent++)
    {   
        cent->x = l;
        cent->y = 10-l;
        cout << cent->x << " : " << cent->y << "\n";                
    }
    delete [] cent;
    return 0;
}
Все записывается нормально, но когда освобождаю память появяется следующее : _block_type_is_valid(phead- nblockuse)
new - delete

Как исправить и какова причина?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 14:54     new - delete
Посмотрите здесь:

"delete [] a, b;" эквивалентно "delete [] a; delete [] b;"? C++
C++ delete[]
C++ new и delete
C++ delete this
C++ delete[]
delete[] *pointer vs. delete pointer и утечка памяти C++
New/Delete C++
New delete C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11819 / 6798 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
12.06.2013, 15:01     new - delete #2
C++
1
2
point  *cent = new point[10];
for(int l = 0; l < 10; l++, cent++)
Вы изменили указатель cent и он теперь содержит другой адрес.
Освобождение памяти происходит по адресу, а не по имени указателя

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
    point  *cent = new point[10];
     point * cent2=cent;
    for(int l = 0; l < 10; l++, cent2++)
    {   
        cent2->x = l;
        cent2->y = 10-l;
        cout << cent2->x << " : " << cent2->y << "\n";                
    }
    delete [] cent;
    return 0;
Nalale
 Аватар для Nalale
3 / 3 / 0
Регистрация: 19.03.2013
Сообщений: 34
12.06.2013, 15:05  [ТС]     new - delete #3
Спасибо!
Yandex
Объявления
12.06.2013, 15:05     new - delete
Ответ Создать тему
Опции темы

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