此malloc错误的含义是什么?损坏的顶部尺寸?

时间:2019-04-22 22:40:46

标签: c

我正在尝试在我创建的几个结构中初始化一些值。 (该程序的目标是模拟虚拟内存)由于某种原因,当我尝试初始化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 个答案:

答案 0 :(得分:4)

在您分配sizePM条目时,您的循环上升到sizeVM