[英]C identified STACK OVERFLOW
我已经完成了上面的代码,并使用了2种不同的编译器,其中一个说“ Segmentation Fault”,另一个说“ 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];
我不知道该怎么办,因为在声明此向量时已经定义了k变量。 有人可以帮我吗?
除非使用动态内存分配,否则无法在运行时定义变量大小。
如我所见,您正在尝试根据用户输入来设置变量大小。
为此,您必须使用动态内存分配。
scanf("%d %d", &k, &x);
if(k > MAX_SIZE) {
return -1;
}
int *w = malloc(sizeof(int) * k);
现在,您已经根据用户输入的大小分配了内存。 但是请确保施加一些限制,因为堆内存是有限的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.