私はそのような関数を介して構造体を渡しています...
expandArrayofStructs(Container *container, int n)
このコンテナーは 1 つの構造体であり、その構造体の内部には別のタイプの構造体の配列があり、これをインナーと呼びます。
内部の配列のサイズをある値だけ拡張し、配列が拡張された後に元の関数を続行したいと思います。したがって、この展開関数は何も返さず、単に呼び出されてデータを展開して終了し、プログラムは以前よりも大きな新しい配列で続行します。
状況の私の理解はこのようなものですが、これは適切に機能しません...
int expandArrayofStructs(Container *container, int n)
{
container->inner = realloc(container->inner, sizeof(inner) * 50);
^
Just a number i picked. so if i
already had an array of 50
I would be increasing by 50 here.
if(Container->inner == NULL)
//HANDLE ERROR IF REALLOC FAILS
//Update the container length
container->length = container->length + 50;
//For some reason the specs of the program say I need to return
//the array length which is an attribute of container
return container->length;
}
しかし、この方法で再割り当てすると、segfault エラーも発生しません。 realloc(): 次のサイズが無効です 0x463829
末尾の数字は異なります。
何が間違っているのかわかりませんが、構造体の配列を動的に再割り当てするより良い方法があれば、提案を受け付けています。この特定のコードは、正確である必要はありません。
唯一の規定は、この関数が型 int を返すことです = 新しい配列の長さ