gpt4 book ai didi

c - 将函数内和函数外的矩阵声明为全局矩阵

转载 作者:行者123 更新时间:2023-11-30 19:51:49 26 4
gpt4 key购买 nike

我通过使用函数调用并在函数中声明我的矩阵并用于在每一行和每一列中写入“1”进行了一些实验。但是一段时间后程序崩溃并停止工作。

示例一:每次在 while 循环中调用时都会声明矩阵

void func(int row, int col){
int matrix[row][col];

for....
write one in the matrix...
}

示例二:在函数外部将矩阵声明为全局矩阵

int matrix[row][col];
void func(){


for....
write one in the matrix...
}

主要代码

int main(){
while(1){
func(...);

}
}

我向您提出的问题是,只要在函数内部声明我的矩阵,我的代码就会崩溃,但在函数外部声明它时,代码不会崩溃。大家知道为什么会出现这样的问题吗?矩阵不是函数中的时间值吗,这意味着函数执行后它不会被删除吗?

最佳答案

在函数内声明时,矩阵在堆栈内分配。如果你的矩阵变得足够大,它将尝试在堆栈之外读/写并导致段错误。在任何函数之外声明它,它是静态分配的,并且是在可执行文件中分配的(更多详细信息 here )。

关于c - 将函数内和函数外的矩阵声明为全局矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35603599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com