0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 55
1

Вылет программы при удалении динамического массива

03.01.2015, 22:01. Показов 1034. Ответов 6
Метки нет (Все метки)

Писал программу с использованием динамического массива, все компилилось нормально, но в какой-то момент программа просто начала вылетать, причем компилятор никак не ругался. Я решил поэксперементировать и написал то, что ниже. Оказалось, что вылетает после вывода звездочки на строчке с удалением дин. массива. Как это вылечить? Или может я что-то не понимаю?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
void test(int *mass) {
    cout << mass[5] << endl;
}
 
int main()
{
    int a;
    int* mass;
    mass = new int;
    mass = new int;
    mass = new int;
    mass = new int;
    mass = new int;
    mass = new int;
    mass = new int;
    mass = new int;
    mass[0] = 0;
    mass[1] = 1;
    mass[2] = 21;
    mass[3] = 13;
    mass[4] = 14;
    mass[5] = 15;
    
    test(mass);
    cout << "*" << endl;
    delete []mass;
    
    cin >> a;
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2015, 22:01
Ответы с готовыми решениями:

Прекращение работы (вылет) программы при попытке вывести в поток значения динамического массива
Доброго всем времени суток. Подскажите пожалуйста, почему возникает следующая проблема. Есть...

Создание двумерного динамического массива (вылет из программы)
Здравствуйте. Создаю двумерный динамический массив: #include &quot;stdafx.h&quot; #include &lt;iostream&gt;...

Ошибка при удалении динамического массива
Добрый вечер! Ругается на HEAP CORRUPTION DETECTED в строке с delete vertex; В чём может быть...

Ошибка при удалении динамического массива
Непонятная мне ошибка при удалении массива #include &lt;iostream&gt; #include &lt;conio.h&gt; using...

6
528 / 430 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
03.01.2015, 22:21 2
Цитата Сообщение от beloid Посмотреть сообщение
Писал программу с использованием динамического массива
Здесь нифига не под массив ты память выделяешь.
Цитата Сообщение от beloid Посмотреть сообщение
mass = new int;
* * mass = new int;
* * mass = new int;
* * mass = new int;
* * mass = new int;
* * mass = new int;
* * mass = new int;
* * mass = new int;
Почитай внимательно про то, как память под массивы ведялется.
0
416 / 415 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
03.01.2015, 22:22 3
Цитата Сообщение от beloid Посмотреть сообщение
что-то не понимаю
это точно, хрень написал ей богу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
void test(int *mass) {
    cout << mass[5] << endl;
}
 
int main()
{
    int a;
    int* mass = new int[6];
    mass[0] = 0;
    mass[1] = 1;
    mass[2] = 21;
    mass[3] = 13;
    mass[4] = 14;
    mass[5] = 15;
    
    test(mass);
    cout << "*" << endl;
    delete []mass;
    
    cin >> a;
    return 0;
}
0
Эксперт С++
8712 / 4294 / 956
Регистрация: 15.11.2014
Сообщений: 9,737
03.01.2015, 22:23 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
using namespace std;
 
void test(int *mass) {
    cout << mass[5] << endl;
}
 
int main()
{
    int a;
    int* mass = new int[6];
    mass[0] = 0;
    mass[1] = 1;
    mass[2] = 21;
    mass[3] = 13;
    mass[4] = 14;
    mass[5] = 15;
    
    test(mass);
    cout << "*" << endl;
    delete []mass;
    
    cin >> a;
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 55
04.01.2015, 02:27  [ТС] 5
А если мне нужно несколько раз расширить массив? Ну, скажем, при каждом расширении увеличить длину на один элемент?
0
528 / 430 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
04.01.2015, 02:31 6
Цитата Сообщение от beloid Посмотреть сообщение
А если мне нужно несколько раз расширить массив? Ну, скажем, при каждом расширении увеличить длину на один элемент?
Будешь выделять память под новое кол-во элементов. Копировать туда старые элементы, освобождать старую область, работать с новой. Такова жизнь.
0
Эксперт С++
8712 / 4294 / 956
Регистрация: 15.11.2014
Сообщений: 9,737
04.01.2015, 02:40 7
Цитата Сообщение от beloid Посмотреть сообщение
А если мне нужно несколько раз расширить массив? Ну, скажем, при каждом расширении увеличить длину на один элемент?
std::vector
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2015, 02:40
Помогаю со студенческими работами здесь

Ошибка при удалении динамического массива
Доброго времени суток! ПРоблема заключается в том, что при попытке очистить память из под...

Ошибка SIGTRAP при удалении динамического 2D массива
Нужно было создать двухмерный динамический массив в форме &quot;пирамиды&quot;, скажем так, заполнить его...

Heap corruption detected при удалении динамического массива
mystring.cpp - здесь происходит ошибка в функции MyString::operator на строке delete s. В чем тут...

Нужно ли при удалении динамического массива присваивать NULL?
Вот создал я динамический массив N на M: int **mas; mas=new int*; for(i=0;i&lt;n;i++) mas=new...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru