Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nalale
3 / 3 / 0
Регистрация: 19.03.2013
Сообщений: 34
#1

new - delete - C++

12.06.2013, 14:54. Просмотров 339. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос new - delete (C++):

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

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

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

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

delete this - C++
Какие последствия могут быть при выполнении команды delete this; из какой-нибудь функции члена?

new и delete - C++
как лучше очищать память? #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; //как лучще очищать память? int main(){ char *buff...

2
Croessmah
Ушел
13770 / 8020 / 924
Регистрация: 27.09.2012
Сообщений: 19,751
Записей в блоге: 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 / 0
Регистрация: 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 - C++
здраствуйте! назрел вопрос class cls1 { ... ... } class cls2 { ... cls1 *pt = new cls1();

New delete - C++
написал код ну там в блоке перегрузки оператора добавил new void operator=(char* t) { int tl=strlen(t); a=new char; ...

new[] - delete[] - C++
Всем привет. Глупый вопрос, но тем не менее, он меня крайне заинтересовал. Вот например, есть такой код: void main() { int...

delete[] - C++
Здравствуйте! Имеется след. код: char* values = new char; values = '\0'; ////ещё код//// delete values; Вопрос - почему...


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

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

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