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

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

Войти
Регистрация
Восстановить пароль
 
 
hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
#1

Ошибка при создании динамического массива. - C++

30.09.2011, 16:57. Просмотров 975. Ответов 16
Метки нет (Все метки)

Все доброго времени.

Начал создавать одномерный массив, потом решил его преобразовать в динамический одномерный.
Понимаю что проблема при указанни с клавы размерности, но как исправить не знаю.
Раскажите что и как. Желательно особо подробно.
Заранее все благодарен.

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
#include <iostream>
 
 
using namespace std;
 
int main()
{
setlocale(LC_ALL,"russian");
 
int z;
 
cout<<"Введите размер массива: ";
cin>>z;
 
int myArray[z];
int i;
for(i=0; i<5; i++)
{
    cout<<"Значение для занесение в массив["<<i<<"]:";
    cin>>myArray[i];
}
 
for(i=0;i<5;i++)
    cout<<i+1<<":"<<myArray[i]<<"\n";
 
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2011, 16:57     Ошибка при создании динамического массива.
Посмотрите здесь:

Ошибка при создании динамического двумерного массива - C++
Ткните пальцем, что не так. Только учусь, делаю лабы, камнями не забрасывайте. Смотрел шаблоны здесь и в других местах, но есть вопрос. ...

Ошибка при создании 2-го элемента динамического списка - C++
НЕ могу понять откуда как исправить данную ошибка . Выскакивает как мне кажется при попытке динамически выделить память для указателя на...

передача параметров в конструктор при создании динамического массива - C++
Добрый день! Есть довольно тривиальный класс: class Array1d{ int* ptr_; public: Array1d(int n): ptr_(new...

String subscript out of range при создании динамического массива - C++
Всем привет. Пишу игру на c++. Смысл состоит в том чтобы отстреливать группы врагов, которые появляются сразу после уничтожения предыдущей...

Ругается new при создании динамического массива через перегруженный конструктор - C++
Перегрузил конструктор: class Library { public: Library(void) //конструктор библиотеки без заданного типа { ...

Ошибка при выводе динамического массива - C++
Здравствуйте! Я создаю динамический массив, заполняю его и при выводе вылетает ошибка &quot;program.exe has stopped working&quot;. #include...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
30.09.2011, 17:04     Ошибка при создании динамического массива. #2
память выделите под массив то
C++
1
2
int *MyArray;
MyArray = new int[z];
Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
30.09.2011, 17:11     Ошибка при создании динамического массива. #3
Отредактировал Ваш код на скорую руку. Но ошибок вроде бы нет.
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"russian");
    int * myArray = NULL, z; 
    do{
        cout << "Введите размер массива: ";
        cin >> z;
    }
    while(z <= 0);
    myArray = new int [z];
    if(myArray == NULL){
        cout << "Память не захвачена." << endl;
        system("pause");
        return 1;
    }
    for(int i = 0; i < z; i++)
    {
        cout << "Значение для занесение в массив[" << i + 1 << "]: ";
        cin >> myArray[i];
    }
 
    for(int i = 0; i < z; i++)
        cout << i+1 << "-элемент: " << myArray[i] <<"\n";
 
    system("pause");
    delete[] myArray;
    return 0;
}
MrGluck
Модератор
Эксперт CЭксперт С++
7184 / 4350 / 634
Регистрация: 29.11.2010
Сообщений: 11,843
30.09.2011, 17:11     Ошибка при создании динамического массива. #4
Не забудьте потом добавить
C++
1
delete[] MyArray;
в конце программы
MrGluck
Модератор
Эксперт CЭксперт С++
7184 / 4350 / 634
Регистрация: 29.11.2010
Сообщений: 11,843
30.09.2011, 17:14     Ошибка при создании динамического массива. #5
Цитата Сообщение от Slimmy Посмотреть сообщение
C++
1
2
#include <iostream>
#include <clocale>
.....
Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
30.09.2011, 17:16     Ошибка при создании динамического массива. #6
Без <clocale> также компилируется. Более того, даже работает.
hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
30.09.2011, 17:50  [ТС]     Ошибка при создании динамического массива. #7
Все большое спасибо.

Цитата Сообщение от Slimmy Посмотреть сообщение
int * myArray = NULL, z;
Я правильно понимаю,что в выше записанном коде "NULL" означает что массив по умолчанию не имеет данных.
Или как понимать?
Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
30.09.2011, 17:54     Ошибка при создании динамического массива. #8
Цитата Сообщение от hoot Посмотреть сообщение
Все большое спасибо.
Я правильно понимаю,что в выше записанном коде "NULL" означает что массив по умолчанию не имеет данных.
Или как понимать?
В данной строчке происходит так называемое "зануление" указателя. То есть происходит его инициализация. Дело в том, что под динамический массив идет выделение памяти и чтобы она была чистой, без "мусора", необходимо её "почистить".
hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
30.09.2011, 18:01  [ТС]     Ошибка при создании динамического массива. #9
Понятно, спасибо)
Ты давно пишешь на с++?
Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
30.09.2011, 18:04     Ошибка при создании динамического массива. #10
Цитата Сообщение от hoot Посмотреть сообщение
Понятно, спасибо)
Ты давно пишешь на с++?
Ну как Вам сказать... В университете С++ со второго курса пошел. Фактически - "программирую" год. Но в это программирование входило лишь выполнение лабораторных работ и больше ничего. Сейчас начал заниматься самостоятельно: книжки там читать всякие умные, упражнения делать. Вообщем, практиковаться.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
30.09.2011, 23:11     Ошибка при создании динамического массива. #11
Цитата Сообщение от Slimmy Посмотреть сообщение
В данной строчке происходит так называемое "зануление" указателя. То есть происходит его инициализация. Дело в том, что под динамический массив идет выделение памяти и чтобы она была чистой, без "мусора", необходимо её "почистить".
Вы хотите сказать, что все элементы динамического массива инициализируются нулем при выделении памяти из-за того, что указатель имеет значение 0? Бред какой-то.

Добавлено через 10 минут
Операция new возвратит адрес на этот массив и этот адрес присвоится указателю. Никакого влияния нулевой указатель не окажет на выделение памяти под массив.
Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
01.10.2011, 09:18     Ошибка при создании динамического массива. #12
Цитата Сообщение от Chelioss Посмотреть сообщение
Операция new возвратит адрес на этот массив и этот адрес присвоится указателю. Никакого влияния нулевой указатель не окажет на выделение памяти под массив.
Покажите, где написано, что я сказал, что всем элементам массива присваивается 0? Инициализация указателя нужна для того, чтобы гарантировать что по адресу этого указателя ничего не будет, то бишь "мусора".

Добавлено через 10 минут
Следовательно, при инициализации указателя макросом NULL мы будем уверены в том, что:
а) указатель никуда не ссылается;
б) его на данный момент нельзя использовать;
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
01.10.2011, 18:35     Ошибка при создании динамического массива. #13
Цитата Сообщение от Slimmy Посмотреть сообщение
Дело в том, что под динамический массив идет выделение памяти и чтобы она была чистой, без "мусора", необходимо её "почистить".
Если еще не понятно, что вы сами написали, то перефразирую:
Цитата Сообщение от Slimmy Посмотреть сообщение
Дело в том, что под динамический массив идет выделение памяти и чтобы память была чистой, без "мусора", необходимо её "почистить".
Или вы под памятью понимаете указатель?
Slimmy
65 / 18 / 2
Регистрация: 09.10.2010
Сообщений: 97
01.10.2011, 18:37     Ошибка при создании динамического массива. #14
Цитата Сообщение от Chelioss Посмотреть сообщение
Чистая память. Как еще по другому понимать?
Может сделаете усилие и прочитаете мое предыдущее сообщение. Порой, ответы на вопросы находятся ближе, чем Вы думаете.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2011, 19:03     Ошибка при создании динамического массива.
Еще ссылки по теме:

Ошибка при заполнении динамического массива - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int N, i, a, l; int head = -1; char ch; int *s = new int ; ...

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

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

ошибка при создании массива - C++
задача такая, методом перебора найти первое простое десятизначное значение дробной части е (эпсилон). для простоты решил не вычислять...

Ошибка при создании массива - C++
Не пойму в чем ошибка... Подскажите пожалуйста. void CreatMas(int *m) { int st,stlb; scanf(&quot;%d&quot;,&amp;st); scanf(&quot;%d&quot;,&amp;stlb); ...


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

Или воспользуйтесь поиском по форуму:
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
01.10.2011, 19:03     Ошибка при создании динамического массива. #15
Цитата Сообщение от Slimmy Посмотреть сообщение
Может сделаете усилие и прочитаете мое предыдущее сообщение. Порой, ответы на вопросы находятся ближе, чем Вы думаете.
А может вы будете свои мысли излагать нормально? И зачем мне искать ответ? Вы вопрос что ли задавали? И самое главное - понял ли вас правильно ТС?
Yandex
Объявления
01.10.2011, 19:03     Ошибка при создании динамического массива.
Ответ Создать тему
Опции темы

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