LINUX.ORG.RU

[чайнег] C


0

0

Плохо у меня с работой с памятью, поэтому прошу помощи.
Есть указатель на память в LENGTH ячеек - TYPE *ponter. Т.е. есть интересующие меня данные в pointer[0-LENGTH];
Мне нужен массив из, допустим, двух таких же указателей - TYPE *pointers[2]. Как мне его заиметь?

TYPE *pointers[2];
TYPE **pointers;

Первый вариант создаст массив из двух элементов с указателями на тип TYPE, второй вариант можно использовать для создания массива указателей произвольной размерности.

ksv
()
Ответ на: комментарий от Zodd

Ну мало ли обратный порядок элементов захочет воплотить :)

ksv
()
Ответ на: комментарий от Zodd

telepate-mode подсказывает, что ТС хочет продублировать массив типа TYPE. Но malloc'ом выделить место под второй экземпляр забыл.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Zodd

Есть указатель TYPE *pointer. В в памяти по адресу pointer валяются sizeof(TYPE)*LENGTH данных (ну, можно сказать, массив). Мне нужно сделать массив из аналогичных указателей. Просто у меня элементы этого массива потом немного правятся в определённых местах. Это битстрим.
Короче, оно сейчас работает нормально.

markevichus ★★★
() автор топика
Ответ на: комментарий от markevichus

сделать массив из аналогичных указателей

Вы все-таки определитесь, что вам нужно: продублировать массив данных в область памяти, на которую указывает другой указатель, или создать массив указателей?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от markevichus

> при использовании

memcpy(pointers[0], pointer, sizeof(TYPE) * LENGTH)

вываливалось с segfault.



Естественно. memcpy сама память не выделяет, а копирует в уже выделенную ранее. Так что сначала malloc, а потом memcpy.

akk ★★★★★
()

>Т.е. есть интересующие меня данные в pointer[0-LENGTH];

Честно, сначала пытался понять что за индекс такой 0-LENGTH - он же отрицательный. Пиши понятнее.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.