Привет, я столкнулся с этой ситуацией. Я использую malloc, чтобы дать мне массив из 10 указателей. Когда я вижу тестовые указатели в gdb, один из них (третий) указывает на 0x0. Иногда в коде происходит ошибка при использовании apple [2] -> string = "hello". Почему malloc делает это? Заранее спасибо за помощь.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(void)
{
typedef struct test
{
char *string;
int data;
} test;
test *apple[10]; // Declare an array of 10 test pointers. This line results in one of the pointers having a null value.
apple[0] = malloc(sizeof(test));
apple[0]->string = "hello";
printf("The string is %s\n",apple[0]->string);
printf("Size of apple[0]->data is %d\n",sizeof(apple[0]->data));
printf("Size of tester is %d\n",sizeof(test));
free(apple[0]);
return 0;
}
Я хотел посмотреть, как будет работать массив указателей. Я не собирался использовать все 10 указателей. Так нужно ли мне malloc только то, что мне нужно? Это совпадение, что третий указатель был 0x0?