구조체의 배열을 만들려고하는데 처음부터 크기를 모르겠습니다. C90에서 double 포인터로 malloc을 사용하십시오.
struct MyStruct** thing;
size_t thing_len = 0;
thing = (struct MyStruct**) malloc(thing_len * sizeof(struct MyStruct*));
//...
thing_len += 1
thing = (struct MyStruct**) realloc(thing_len * sizeof(struct MyStruct*));
내가 thing
이 MyStruct**
대신 유형 MyStruct*
을 얻고 0x0
을 포함 할
struct MyStruct* thing;
size_t thing_len = 0;
thing = malloc(thing_len * sizeof(struct MyStruct));
//...
thing_len += 1
thing = realloc(thing_len * sizeof(struct MyStruct));
그것은 일한다!
변경 사항이 있는지는 잘 모르지만 나는 -ansi
및 -pedantic
옵션을 사용하고 있습니다. 코드
realloc(thing_len * sizeof(struct MyStruct*));
에서
는 [mcve] 입력하세요이다. – Mat
[C에서 malloc() 및 family의 반환 값을 캐스팅하지 않는 이유에 대한이 토론을 참조하십시오.] (https://stackoverflow.com/q/605845/2173917) –
사용 된 기능에 대한 문서. – alk