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

new - delete - C++

12.06.2013, 14:54. Просмотров 343. Ответов 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

Как исправить и какова причина?
http://www.cyberforum.ru/cpp-beginners/thread2212443.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 14:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос new - delete (C++):

В чем разница между 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; ?

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

2
Croessmah
++Ͻ
14149 / 8074 / 1512
Регистрация: 27.09.2012
Сообщений: 19,910
Записей в блоге: 3
Завершенные тесты: 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
Привет! Вот еще темы с решениями:

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

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

new и delete
Ошибка, незнаю как для моего класса выделить память. Как исправить? ...

delete this
Добрый день! У меня возник такой вопрос - почему в программе возникает...


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

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

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