Я пытаюсь выделить блок памяти и сохранить список структур без использования нескольких malloc для каждого ... это просто общий пример, у меня нет исходного кода, с которым я работал ранее, ноэто общая идея, но моя проблема заключалась в том, что я получал повреждение кучи, когда другие части моего кода выполнялись после вызова функции InitPoints ().Я не знаю, какая часть моего кода недопустима, но я подозреваю, что она находится в цикле for функции InitPoints ().Я пытаюсь использовать это как таблицу, затем я могу создать дополнительные таблицы определенного размера, если мне не хватит памяти, и связать их вместе ... что-то вроде массива с динамическим расширением, если это имеет смысл.
typedef struct Tb{
POINT points;
POINT *next;
} TABLE;
typedef struct Pt{
int x;
int y;
}POINT;
POINT *mypoints;
int main() {
int size = 10;
int i = 0;
mypoints = InitPoints(size);
for(i=0; i < size; i++)
{
printf("mypoint [%d] = (%d,%d)\n",i, mypoints->x, mypoints->y);
mypoints = mypoints + sizeof(POINT);
}
// some other code...
// i.e. createThread(....)
return 0;
}
POINT* InitPoints(int size)
{
POINT *tmp;
POINT *orig;
int a = 10;
int b = 1000;
orig = (POINT*) malloc (sizeof(POINT) * size);
if(orig == NULL)
return NULL;
tmp = orig;
for (i = 0; i < size; i++)
{
tmp->x = a++;
tmp->y = b++;
tmp = tmp + sizeof(POINT);
}
return orig;
}