Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
29 / 6 / 2
Регистрация: 05.10.2012
Сообщений: 117
1

Оператор new. Динамическое выделение памяти - В чем разница двух определений массивов

26.08.2014, 15:55. Просмотров 756. Ответов 15
Метки нет (Все метки)


Подскажите, в чем разница двух определений массивов
C++
1
2
int *mas = new int[1000];
int *mas = new int[];
Т.е с указанием размера и без. Я правильно понимаю, что во втором случае размер увеличивается по мере необходимости, а в первом уже установлен размер?
И почему в следуещем коде у меня возникает ошибка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    ifstream in("input.txt");
    ofstream out("output.txt");
 
    int *mas = new int[];
 
    int n;
    in >> n;
 
    for (int i = 0; i < n; i++){
        in >> mas[i];
        //cout << mas[i] << ' ';
    }
 
    heap(mas, n);
    for (int i = 0; i < n; i++) out << mas[i] << ' ';
    delete[] mas;
    return 0;
}
Указывает на delete[] mas; А если в определении писать размер: int *mas = new int[100]; то ошибки нету.
Вот что выдает:
C++
1
Heap.exe has triggered a breakpoint.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2014, 15:55
Ответы с готовыми решениями:

Динамическое выделение памяти. Использование функций для обработки двумерных массивов
не понимаю что делаю хотя задание такое 1.2. Постановка задачи Задача 1. Разработать алгоритм и...

Как использовать динамическое выделение памяти для новых массивов фиксированного размера?
как использовать динамическое выделение памяти для новых массивов фиксированного размера?

Стек, куча, хранение в памяти, динамическое выделение памяти, указатели в чем отличие?
Здравствуйте. Прочитал кучу определений но никак не пойму вообще что к чему. 1)Стек - это якобы...

Распределение памяти. Динамическое выделение памяти
an-1 an-2 ... a2

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
15
3239 / 2047 / 350
Регистрация: 24.11.2012
Сообщений: 4,897
26.08.2014, 16:09 2
Цитата Сообщение от Aspirin Посмотреть сообщение
int *mas = new int[];
Мне вот интересно как это вообще компилируется.
0
1173 / 886 / 94
Регистрация: 03.08.2011
Сообщений: 2,457
26.08.2014, 16:14 3
Нет, без размера вообще не должен компилироваться. В GCC не компилируется. Какой компилятор?
0
846 / 777 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
26.08.2014, 16:15 4
Цитата Сообщение от Aspirin Посмотреть сообщение
Я правильно понимаю, что во втором случае размер увеличивается по мере необходимости
Неправильно. Второй случай вообще неверен в корне. Массива нулевой длины быть не должно.
0
29 / 6 / 2
Регистрация: 05.10.2012
Сообщений: 117
26.08.2014, 16:28  [ТС] 5
У меня в vs2013 компилится и даже предупреждений не выдает) Понял теперь, спасибо.
0
2540 / 1199 / 358
Регистрация: 30.11.2013
Сообщений: 3,820
26.08.2014, 16:53 6
Цитата Сообщение от Aspirin Посмотреть сообщение
У меня в vs2013 компилится и даже предупреждений не выдает) Понял теперь, спасибо.
Готов заплатить за гифку, как эта программа компилируется ))))
0
846 / 777 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
26.08.2014, 17:01 7
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Готов заплатить за гифку
1 000 000 рублей.
В VC 2008 тоже компилится. Более того, даже можно к какому-нибудь элементу обратиться, и не всегда ещё куча портится (хотя, возможно, это только в отладке).
0
29 / 6 / 2
Регистрация: 05.10.2012
Сообщений: 117
26.08.2014, 17:53  [ТС] 8
А кстати если я создам массив с определенным размером, но потом мне понадобиться дополнительное место в этом массиве можно как-то добавить? Или надо создавать новый?
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
26.08.2014, 17:59 9
Aspirin, ну и нафига тебе эта ручная возня с массивом? Чем не устраивает стандартный класс vector ?
Тут: http://www.cplusplus.com/reference/vector/vector/
0
29 / 6 / 2
Регистрация: 05.10.2012
Сообщений: 117
26.08.2014, 18:00  [ТС] 10
Я знаю про вектор, мне интересно что будет в случае с массивом.
0
14042 / 7523 / 1781
Регистрация: 30.01.2014
Сообщений: 12,581
26.08.2014, 18:05 11
Цитата Сообщение от Aspirin Посмотреть сообщение
Я знаю про вектор, мне интересно что будет в случае с массивом.
Освобождаем старую память, выделяем новую с большим размером.
1
Заблокирован
26.08.2014, 18:18 12
Да, действительно, в 2013-й тот же булщит Баг конторы Гейтса.
0
Миниатюры
Оператор new. Динамическое выделение памяти - В чем разница двух определений массивов  
Заблокирован
26.08.2014, 18:20 13
окно памяти начинается с адреса этого злополучного указателя
0
14042 / 7523 / 1781
Регистрация: 30.01.2014
Сообщений: 12,581
26.08.2014, 18:21 14
-NEURON-, расстрел памяти, вестимо.
0
2712 / 1879 / 556
Регистрация: 05.06.2014
Сообщений: 5,455
26.08.2014, 21:30 15
А кстати если я создам массив с определенным размером, но потом мне понадобиться дополнительное место в этом массиве можно как-то добавить?
Без молотка и напильника с перегрузкой new/delete - нет.
0
2605 / 2195 / 234
Регистрация: 03.07.2012
Сообщений: 7,916
Записей в блоге: 1
26.08.2014, 23:20 16
Цитата Сообщение от Renji Посмотреть сообщение
Без молотка и напильника с перегрузкой new/delete - нет.
А если нет желаниия "стучать и пилить" - просто используешь vector
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2014, 23:20

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Динамическое выделение памяти
Имеется: #define Index 1000 typedef int BaseType; typedef BaseType TMemList; typedef ...

Динамическое выделение памяти!
Всем привет! У меня проблема с динамическим выделение памяти. В чем конкретней? в освобождении...

Динамическое выделение памяти
Здравствуйте! Хочу часть кода,где динамически выделяется память под массив: double *darr; ...

Динамическое выделение памяти
И так, вот код, в том месте где происходит чтение файла со списком меню, но по завершению этого...


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

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

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