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

освобождннии памяти - C++

Восстановить пароль Регистрация
 
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
03.03.2014, 18:54     освобождннии памяти #1
Почему возникает ошибка при освобожднни памяти delete-ом?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio.h>
using namespace std;
    
void main(void){
    int* int_array = new int[1000];
    int i;
    if (int_array != NULL){
        for (i = 0; i < 1000; i++) 
            int_array[i] = i + 1;
        for (i = 0; i < 1000; i++) 
            cout << *int_array++ << ' ';
        delete int_array;
    }
 
    char ch = getchar();
}
если сделать так, то норм
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio.h>
using namespace std;
    
void main(void){
    int* int_array = new int[1000];
    int i;
    if (int_array != NULL){
        for (i = 0; i < 1000; i++) 
            int_array[i] = i + 1;
        for (i = 0; i < 1000; i++) 
            cout << int_array[i] << ' ';
        delete int_array;
    }
 
    char ch = getchar();
}
Миниатюры
освобождннии памяти  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
03.03.2014, 19:00     освобождннии памяти #2
C++
1
delete[] int_array;
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
03.03.2014, 19:02  [ТС]     освобождннии памяти #3
delete[] int_array;
не помагает
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
03.03.2014, 19:19     освобождннии памяти #4
после
C++
1
2
        for (i = 0; i < 1000; i++) 
            cout << *int_array++ << ' ';
int_array указывает на другой адрес.

Добавлено через 1 минуту
если вам нужна именно запись *int_array++, то пишите
C++
1
delete[] (int_array - 1000);
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
03.03.2014, 19:28  [ТС]     освобождннии памяти #5
если вам нужна именно запись *int_array++, то пишите
delete[] (int_array - 10);
та же ошибка, щас
Я кстате так делал, тока отнимал 999, как я считал
неправильно посчитал
zss
Модератор
Эксперт С++
 Аватар для zss
5955 / 5560 / 1788
Регистрация: 18.12.2011
Сообщений: 14,209
Завершенные тесты: 1
03.03.2014, 19:29     освобождннии памяти #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
using namespace std;
int main(void)
{
    int* int_array = new int[1000];
    int i;
    if (int_array != NULL)
    {
        for (i = 0; i < 1000; i++) 
            int_array[i] = i + 1;
         for (int *p=int_array;p<int_array+1000; p++) 
            cout << *p << ' ';
        delete[] int_array;
    }
    getch();
    return 0;
}
Yandex
Объявления
03.03.2014, 19:29     освобождннии памяти
Ответ Создать тему
Опции темы

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