realloc()でメモリを割り当てようとしています。これは今のところ機能します。しかし、割り当てられたメモリを構造体変数のポインタに割り当てたい場合、セグメンテーション違反が発生します。
// in header
typedef struct {
int a;
char test[20];
} MyContent;
typedef struct {
MyContent* values;
// simmilar to: MyContent values[]
// ... some other stuff
} MyData;
// in source
void myFunction(MyData* dataPtr) {
dataPtr->values = NULL;
MyData* tempPtr = NULL;
for (int i = 1; i < 10; i++) {
tempPtr = (MyContent*) realloc(dataPtr->values, i * sizeof(MyContent));
if (tempPtr == NULL) {
free(dataPtr->values);
break;
}
dataPtr->values = tempPtr; // Here I get the segmentation fault
dataPtr->values[(i-1)].a = 42;
// ...
}
}
ここで何が問題になっているのかわかりません。助言がありますか?ご協力いただきありがとうございます。