Другие языки программирования и технологии
Как выделить память с++
monitor *monitor1[N]; Вот такой массив, каждый элемент которого является указателем на структуру. Как выделить под него память?
стандартное выделение массива указателей я обычно пишу так
int **arr = new int*[size];
delete[] arr;
int **arr = new int*[size];
delete[] arr;
Nurlan Kuanishbekov
А если как у меня, то как выделить?
Лучше никак. std::vector и без всяких указателей. В реальной жизни это так делают.
Nurlan Kuanishbekov
Ну нам препод сказал так. Векторы мы ещё не проходили.
В Си работать с динамической памятью можно при помощи соответствующих функций распределения памяти (calloc, malloc, free), для чего необходимо подключить библиотеку
malloc.h
С++ использует новые методы работы с динамической памятью при помощи операторов new и delete:
new — для выделения памяти;
delete — для освобождения памяти.
Оператор new используется в следующих формах:
new тип; — для переменных
new тип [размер]; — для массивов
Память может быть распределена для одного объекта или для массива любого типа, в том числе типа, определенного пользователем. Результатом выполнения операции new будет указатель на отведенную память, или нулевой указатель в случае ошибки.
int *ptr_i;
double *ptr_d;
struct person *human;
…
ptr_i = new int;
ptr_d = new double[10];
human = new struct person;
Память, отведенная в результате выполнения new, будет считаться распределенной до тех пор, пока не будет выполнена операция delete.
Освобождение памяти связано с тем, как выделялась память – для одного элемента или для нескольких. В соответствии с этим существует и две формы применения delete:
delete указатель; — для одного элемента
delete[] указатель; — для массивов
Например, для приведенного выше случая, освободить память необходимо следующим образом:
delete ptr_i;
delete[] ptr_d;
delete human;
Освобождаться с помощью delete может только память, выделенная оператором new.
Пример Создание динамического массива
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include
using namespace std;
int main()
{
int size;
int *dan;
system("chcp 1251");
system("cls");
cout << "Ввести размерность массива : ";
cin >> size;
dan = new int[size];
for (int i = 0; i<size; i++) {
cout << "dan[" << i << "] = ";
cin >> dan[i];
}
for (int i = 0; i<size; i++)
cout << dan[i] << " ";
delete[] dan;
cin.get(); cin.get();
return 0;
}
Результат выполнения
Операторы new и delete
Указатель dan – базовый адрес динамически распределяемого массива, число элементов которого равно size. Операцией delete освобождается память, распределенная при помощи new.
malloc.h
С++ использует новые методы работы с динамической памятью при помощи операторов new и delete:
new — для выделения памяти;
delete — для освобождения памяти.
Оператор new используется в следующих формах:
new тип; — для переменных
new тип [размер]; — для массивов
Память может быть распределена для одного объекта или для массива любого типа, в том числе типа, определенного пользователем. Результатом выполнения операции new будет указатель на отведенную память, или нулевой указатель в случае ошибки.
int *ptr_i;
double *ptr_d;
struct person *human;
…
ptr_i = new int;
ptr_d = new double[10];
human = new struct person;
Память, отведенная в результате выполнения new, будет считаться распределенной до тех пор, пока не будет выполнена операция delete.
Освобождение памяти связано с тем, как выделялась память – для одного элемента или для нескольких. В соответствии с этим существует и две формы применения delete:
delete указатель; — для одного элемента
delete[] указатель; — для массивов
Например, для приведенного выше случая, освободить память необходимо следующим образом:
delete ptr_i;
delete[] ptr_d;
delete human;
Освобождаться с помощью delete может только память, выделенная оператором new.
Пример Создание динамического массива
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include
using namespace std;
int main()
{
int size;
int *dan;
system("chcp 1251");
system("cls");
cout << "Ввести размерность массива : ";
cin >> size;
dan = new int[size];
for (int i = 0; i<size; i++) {
cout << "dan[" << i << "] = ";
cin >> dan[i];
}
for (int i = 0; i<size; i++)
cout << dan[i] << " ";
delete[] dan;
cin.get(); cin.get();
return 0;
}
Результат выполнения
Операторы new и delete
Указатель dan – базовый адрес динамически распределяемого массива, число элементов которого равно size. Операцией delete освобождается память, распределенная при помощи new.
Nurlan Kuanishbekov
Спасибо, но это не то
открой командную строку от имени Администратора затем пропиши комманду rd и там путь к c++ потом откроеца окно с помощью по выделению памяти
Похожие вопросы
- Может кто-то знает как это убрать? Написала курсовую и увидела, что некоторые фрагменты выделены светло-розовым цветом.
- Windows получение выделенного текста в любой программе, желательно без его копирования в буфер!
- Помогите с проблемой,Есть ли или существует метод-способ востоновить данные,файлы с карты памяти телефона.
- Как написать программу, которая будет представлять вещественное число в памяти компьютера
- Как в фотошопе уменьшить выделенное?
- Посдкажите как сохранить выделенную область в фотошоп кс4 в качестве jpeg файла.
- Выделить в массиве число каким-нибудь цветом - C++
- Выделение памяти в C
- Как увелчить размер файла подкачки виртуальной памяти?
- помогите найти утечку в памяти Builder С++