c - 这个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;
解决方案
sizePM
当您分配sizeVM
条目时,您的循环会上升。
推荐阅读
- rest - 捕获从 Restful 服务发送的数据包
- matlab - 为什么我的分类数组时间中的年份没有在 Matlab 中正确转换?
- asp.net - 无法在 Quickbooks 桌面版 Invoice 的 Other1 和 Other2 列中添加数据
- r - 使用 tidyr 计算文本挖掘中字符串的比例时遇到问题
- qt - QT + OpenCV undefiend 对 cv::stereoBM::create(int,int) 的引用
- debian - 得到()没有道歉
- php - Laravel Nova:存储相关文件记录的外键(包含文件路径)
- java - 线程“main”java.lang.Error 中的异常:未解决的编译问题。什么不见了?
- javascript - 从每个页面获取整个网站的所有cookies
- java - 是否可以对@BeforeEach 进行参数化,即根据每个@Test 给出的参数调用不同的@BeforeEach?