Что означает эта ошибка malloc?Поврежден верхний размер? - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь инициализировать некоторые значения в нескольких созданных мной структурах.(цель программы - симуляция виртуальной памяти) По какой-то причине, когда я пытаюсь инициализировать pgTable [i] .validFlag = 1, я получаю эту ошибку,

malloc (): поврежденный размер топа,

, но не в том случае, если я инициализирую его значением 0. Я подумал, что это может что-то сделать, если я выйду из конца моего массива, но я не понимаю, как это возможно.

Может кто-нибудь сказать мне, что яя делаю не так?

  int* memmory = malloc( sizeof( int ) * sizeVM * pageSize );
  struct TLBentry* tlb = malloc( sizeof(struct TLBentry) * sizeTLB );
  struct pageTableEntry* pgTable = malloc( sizeof(struct pageTableEntry) * sizeVM );

  for( int i = 0; i < sizeTLB; i++){
    tlb[i].virtualAddress = i;
    tlb[i].physicalAddress = i;
  }

  for( int i = 0; i < sizePM; i++){
    pgTable[i].dirty = 0;
    pgTable[i].validFlag = 1;
    pgTable[i].physicalAddress = i;
  }

  memSys->virtMem = memmory;
  memSys->tlb = tlb;
  memSys->pgTable = pgTable;

1 Ответ

4 голосов
/ 23 апреля 2019

Ваш цикл увеличивается до sizePM, пока вы выделяете sizeVM записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...