powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выделение памяти для N размерного массива.
8 сообщений из 33, страница 2 из 2
Выделение памяти для N размерного массива.
    #38000531
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
int *mass; //создали указатель на int. Указатель обычно занимает 4 байта.  
...
Рейтинг: 0 / 0
Выделение памяти для N размерного массива.
    #38000533
goodbenya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
goodbenya,

как я понимаю этот не работает из за того что массив динамически...?или надо искать длину иначе
...
Рейтинг: 0 / 0
Выделение памяти для N размерного массива.
    #38000543
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodbenyaegorych, Блин это сообщение меня смутило...не смотря на то что я реализовал
вот пример...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
{
int *mass;//создали массив //НЕВЕРНО! Создали указатель, сейчас он указывает к чёрту на рога
int sizeStart=1;//задали начальный размер
int countFor=rand()%100;//сымитировали неизвестное число элементов для записи
mass=(int*)malloc(sizeStart*sizeof(int));//Вот ТЕПЕРЬ создали массив под sizeStart переменных типа int
int count=0;//Неиспользуемая переменная
	for(int i=0;i<countFor;++i)
	{
		if (mass!=NULL) //А если NULL? Тогда только охнуть и закончить выполнение программы.
		{
		mass=(int*)realloc(mass,20+(sizeStart*sizeof(int)));//Место, выделенное массиву, увеличили на 20 байт (?)
		sizeStart=i;//"Размеру" массива присвоили i (на первом проходе это 0). Зачем?
		}
		sizeStart++;//Увеличили sizeStart на 1. Теперь он равен i+1.
		mass[i]=i*i;
	}
	for(int i=0;i<countFor;++i)
	{
		std::cout<<mass[i]<<"  ";
	}
}

В тег SRC не забывайте оборачивать код, пожалуйста. Замечания в комментариях. Можете объяснить, чего Вы хотели добиться каждой из строк в цикле?
...
Рейтинг: 0 / 0
Выделение памяти для N размерного массива.
    #38000552
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodbenyaили надо искать длину иначенет возможности вычислить длину динамического массива в С. поэтому её придётся хранить, обновлять при реалоке, и таскать повсюду за собой, где у тебя используется этот массив, увы.
...
Рейтинг: 0 / 0
Выделение памяти для N размерного массива.
    #38000564
goodbenya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,
ну ведь в случаи если так

int massStatic[10];
int sz=sizeof(massStatic)/sizeof(int);
в результате sz=10;
а если так
int *massDynamic=new int[10];
int sz=sizeof(massDynamic)/sizeof(int);
в результате sz=1;
...как же тогда узнать длину массива динамического?
...
Рейтинг: 0 / 0
Выделение памяти для N размерного массива.
    #38000593
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodbenya...как же тогда узнать длину массива динамического?
В самом языке нет такого понятия. О длине может ведать
либо шаблон который ты используешь. К примеру тот-же vector<type>
либо отдельная переменная которую ты сам должен где-то объявить
и использовать. Так-же скорее всего поступает и шаблон.

Сам аллокатор памяти и механизмы ОС скорее всего могуть дать информацию
о длине, но это будет фейк. т.к. длина может округляться в сторону какого-то
числа. Тоесть ты аллоцировал 10 байт а фактически резеревировано другое число
параграфов, сегментов или ещё бог знает каких единиц аллокации.
Такая инфа для твоей программы - безсмысленна. Это вне плоскости алгоритма
и вне плоскости решаемой задачи.
...
Рейтинг: 0 / 0
Выделение памяти для N размерного массива.
    #38000621
goodbenya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,
а как мне правильно сформировать первую строчку...по началу ей NULL присвоить...
типа
int mass=NULL ?
...
Рейтинг: 0 / 0
Выделение памяти для N размерного массива.
    #38001111
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodbenyaAbstraction,
а как мне правильно сформировать первую строчку...по началу ей NULL присвоить...
типа
int mass=NULL ?я, конечно, не Abstraction, но принято делать так:
Код: plaintext
1.
int *mass=( int* )malloc( sizeStart*sizeof( int ) );

инициализируй переменные в момент их объявления где только можешь, и избавишься от целого класса ошибок навсегда
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выделение памяти для N размерного массива.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]