【发布时间】:2013-09-11 15:39:21
【问题描述】:
我有这段 C 语言代码:
char *options[100000];
int k[100000];
char *param[100000];
int n;
int i,j;
...
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%s%d",&options[i],&k[i]);
param[i]="On";
}
...
正如程序到达这一点:
scanf("%s%d",&options[i],&k[i]);
我收到运行时错误(堆栈溢出)。 这里的输入应该是这样的:
word1 number1
word2 number2
等等。我不知道为什么会这样。有什么问题?
【问题讨论】:
-
您的数组大于堆栈上的可用内存量。因此 stack 溢出。您需要堆分配它们。如果这是 C++,请使用
std::vector。如果不是删除 C++ 标签。 -
@GrijeshChauhan 为什么会有帮助?
-
除了堆栈问题之外,当您尝试写入
options[n]和param[n]时,您还尝试写入取消引用的未初始化指针,因为您从未为这些指针的字符串提供任何空间指向。
标签: c stack-overflow