Closed wangziwenhk closed 15 hours ago
我感觉是因为a在栈上分配的时候多次分配了内存导致的,我得把整个函数的所有变量都放到entry中
这是关于Clang的实现
int main(){
for(;;){
int a = 1;
}
}
Out:
define dso_local noundef i32 @main() #0 {
%1 = alloca i32, align 4
%2 = alloca i32, align 4
store i32 0, ptr %1, align 4
br label %3
3: ; preds = %3, %0
store i32 1, ptr %2, align 4
br label %3, !llvm.loop !5
}
这个似乎是预先分配的
一般情况下,这样的代码是非良构的,因为它不遵循了"清晰的退出条件"的编程原则。kotlin 我不知道,C++预计在C++26取消此规则
但为了内存安全,还是要改的
你搁这说什么呢
一般情况下,这样的代码是非良构的,因为它不遵循了"清晰的退出条件"的编程原则。kotlin 我不知道,C++预计在C++26取消此规则
我们在讨论栈溢出你跟我讲设计?
对于所有bodyStmt,我们需要获取其中的varDefineStmt并加载到entry中,但这可能破坏原本的内存分配策略
例如以下代码
会造成栈溢出