Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Nalale
3 / 3 / 1
Регистрация: 19.03.2013
Сообщений: 34
1

new - delete

12.06.2013, 14:54. Просмотров 350. Ответов 2
Метки нет (Все метки)

Добрый день. Выделяю память для записи 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


Как исправить и какова причина?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 14:54
Ответы с готовыми решениями:

Используя delete по указателю, возвращенному new [] или delete [] указателем, возвращаемым new
Помогите ответить на вопрос, не могу понять суть вопроса (правильно ли понимаю,...

В чем разница между delete и delete[]?
а можете еще по подробней рассказать про delete, точнее даже delete, чем...

Чем отличается delete[] от delete?
чем отличается? delete mas от delete mas

delete[] *pointer vs. delete pointer и утечка памяти
Здравствуйте! Есть класс &quot;умного&quot; указателя counted_ptr, который удаляет...

"delete [] a, b;" эквивалентно "delete [] a; delete [] b;"?
Я правильно понимаю, что &quot;delete a, b;&quot; эквивалентно &quot;delete a; delete b;&quot; ?

2
Croessmah
++Ͻ
14630 / 8379 / 1582
Регистрация: 27.09.2012
Сообщений: 20,583
Записей в блоге: 2
Завершенные тесты: 1
12.06.2013, 15:01 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;
1
Nalale
3 / 3 / 1
Регистрация: 19.03.2013
Сообщений: 34
12.06.2013, 15:05  [ТС] 3
Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2013, 15:05

delete[]
Здравствуйте! Имеется след. код: char* values = new char; values = '\0';...

new и delete
как лучше очищать память? #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

New delete
написал код ну там в блоке перегрузки оператора добавил new void...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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