gpt4 book ai didi

C 识别堆栈溢出

转载 作者:行者123 更新时间:2023-11-30 15:17:13 24 4
gpt4 key购买 nike

我已经编写了上面的代码,并且使用了 2 个不同的编译器,一个编译器显示“段错误”,另一个编译器显示“handle_exceptions: Exception: STATUS_STACK_OVERFLOW”。这是代码。

int main() {
int k, x, f, i, j, tmp, ct;
scanf("%d %d", &k, &x);
int w[k];
for( f = 0; f<k; f++){
scanf(" %d", &w[f]);
}
while(x--){
scanf("%d %d", &i, &j);
tmp = 3;
for(ct = j; i<=ct<=j; ct--){
if(tmp > w[ct]){
tmp = w[ct];
}
}
printf("%d\n", tmp);
}
return 0;
}

我已经逐行注释了这段代码并进行了测试,但这里出现错误:

int w[k];

我不知道我能做什么,因为当声明这个 vector 时,k变量已经被定义了。有人可以帮助我吗?

最佳答案

如果您定义了这样的数组:

int w[k];

它将存储在堆栈中,堆栈的大小有限。

如果使用malloc初始化,数据将存储在堆中(堆的大小也有限,但它允许您存储更多数据)

int *w = malloc(sizeof(int) * k);

你试过这个吗?

检查this了解堆栈与堆之间的差异。

始终检查malloc()的返回值,这只是一个示例,但不使用returned value of malloc()是一个不好的做法。 .

关于C 识别堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32597049/

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