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

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

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

new - delete - C++

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

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

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

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

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

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

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

ошибка delete [] - C++
string res = &quot;asd&quot;; char* temp = new char; strcpy(temp, res.c_str()); //------- delete temp; когда выполняется последняя строка,...

Delete and Destructor - C++
Привет! :) Есть следующий код, в нем есть реализация сложения матриц. Matrix.cpp Matrix::Matrix(int m, int n) { row_ = m; ...

с free в delete - C++
Как эту функцию можно переписать с помощью delete? void A(int **p,int r){ int **pr; for(pr = p; pr &lt; pr + r; tr++) ...

Указатели и delete - C++
Добрый вечер! Возникла проблема с delete, почему-то при удаление объекта он не заходит не в один деструктор. Хотелось, чтобы Вы помогли, а...

Использование New и Delete - C++
Уважаемые форумчане, помогите поправить программу. Программа реализует дек с использованием New и Delete. Но не запускается. Программа...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 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
3 / 3 / 0
Регистрация: 19.03.2013
Сообщений: 34
12.06.2013, 15:05  [ТС]     new - delete #3
Спасибо!
Yandex
Объявления
12.06.2013, 15:05     new - delete
Ответ Создать тему
Опции темы

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