Я создаю структуру с неопределенным размером.Как изменить размер структуры с помощью malloc
#define namemax 128
struct Image{
char name[namemax+1];
int length;
double *array; //double array[256]
};
struct Image* graph;
graph=malloc(max*sizeof(struct Image));
Если я определяю array[256]
, все работает нормально. , но если я использую double *array
, а затем написать
graph[check].array = malloc(100 * sizeof(double *));
создает неисправность сегмента. Мне было интересно, как я могу определить размер, используя malloc
и realloc
для массива. Если я добавлю значение в массив, он показывает ошибку сегмента.
struct Image* graph;//outside the while loop
while: //it is inside the while loop
//basically it read different name each line, and put the x and y to the array
graph[check].array = malloc(100 * sizeof(double));
\t check++;
\t strcpy(graph[check].name,type);
\t graph[check].array[count]=shiftX;
\t graph[check].array[count+1]=shiftY;
Ваш код является законным, но не гарантирует, что массив malloced «после» объекта, поэтому он фактически не увеличивает размер объекта. – John3136
Вы на 32 бит? – alk
** Как ** вы получаете SIGSEGV? 'graph [check] .array = malloc (100 * sizeof (double)); graph [check] .array [55] = 2.5; 'должен работать нормально - ** если предположить, что вызов' malloc() 'преуспевает. Опубликуйте больше кода. –