Skip to content

Commit 7fb3ea4

Browse files
committed
修复内存溢出问题
Signed-off-by: duanyB <duanyuxuan5566232@163.com>
1 parent cb27b58 commit 7fb3ea4

4 files changed

Lines changed: 8 additions & 9 deletions

File tree

‎src/main/java/dev/duanyper/cidcore/CInterpreter.java‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ public Variable calcExpression(TreeNode treeNode) throws CIdGrammarException, CI
497497
// 处理后缀自增自减操作: var++ 或 var--
498498
String op = cur.substring(0, cur.length() - "_postfix".length());
499499
Variable var = stack.pop(); // 变量
500-
500+
501501
// 保存原始值
502502
Variable originalValue = null;
503503
if (var.getType().equals(CIdType.Int)) {
@@ -510,15 +510,15 @@ public Variable calcExpression(TreeNode treeNode) throws CIdGrammarException, CI
510510
originalValue = CIdBOOLEAN.createBOOLEAN(var.getValue().intValue() != 0);
511511
} else if (var.getType() instanceof CIdPointerType) {
512512
originalValue = CIdPOINTER.createPOINTER(
513-
((CIdPOINTER) var).getLevel(),
514-
var.getValue().longValue(),
515-
((CIdPOINTER) var).getTargetType()
513+
((CIdPOINTER) var).getLevel(),
514+
var.getValue().longValue(),
515+
((CIdPOINTER) var).getTargetType()
516516
);
517517
}
518-
518+
519519
// 执行自增/自减操作 (Variable类已经直接支持++和--)
520520
var.procOperation(null, op);
521-
521+
522522
// 返回原始值
523523
stack.push(originalValue);
524524
} else if (MExp2FExp.Operation.getValue(cur) != 0) {

‎src/main/java/dev/duanyper/cidcore/DbgStart.java‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import dev.duanyper.cidcore.exception.CIdGrammarException;
44
import dev.duanyper.cidcore.libraries.CStdIO;
55

6-
import java.lang.reflect.InvocationTargetException;
76
import java.util.List;
87

98
public class DbgStart {

‎src/main/java/dev/duanyper/cidcore/memory/paging/PagingManager.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static PageTable createNewPageTable() {
4242
static int getNextFreePhysicalPage() {
4343
curFreePhysicalMemoryPage++;
4444
if (curFreePhysicalMemoryPage > divide4096(PagingMemoryManager.maxMemorySize)) {
45-
curFreePhysicalMemoryPage = 0;
45+
throw new OutOfMemoryError("Physical memory pages exhausted");
4646
}
4747
return curFreePhysicalMemoryPage;
4848
}

‎src/main/java/dev/duanyper/cidcore/memory/paging/PagingMemoryManager.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.Arrays;
66

77
public class PagingMemoryManager implements CIdMemoryManager {
8-
static long maxMemorySize = 4 * 1024 * 1024;
8+
static long maxMemorySize = 64 * 1024 * 1024;
99

1010
@Override
1111
public void init() {

0 commit comments

Comments
 (0)