首页 > 解决方案 > 这个malloc错误是什么意思?损坏的顶部尺寸?

问题描述

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

标签: c

解决方案


sizePM当您分配sizeVM条目时,您的循环会上升。


推荐阅读