分段错误 c++ in>500
Segmentation fault c++ in>500
我有个问题。一旦在数据中输入超过500个分段错误就会发生。错误可能在这里的某个地方。
int y = 1, n, m, x = 1, a, b;
cin >> n >> m;
long long tab[ n + 1 ][ n + 1 ];
bool od[ n + 1 ][ n + 1 ];
do
{
do
{
tab[ x ][ y ] = 0;
od[ x ][ y ] = false;
y++;
}
while( y != n + 1 );
y = 1;
x++;
} while( x != n + 1 );
因为后来它是cin to,这是不会发生的。
局部变量存储在堆栈部分,其大小是有限的。
在您的程序中,二维数组变量是巨大的。VC++系统中的默认堆栈大小为1MB。如果n>500,则会违反此限制。这应该是分割错误的原因。
尝试动态分配内存,然后从堆中分配内存。
首先,这种语法是不合法的C++:
int y = 1, n, m, x = 1, a, b;
cin >> n >> m;
long long tab[ n + 1 ][ n + 1 ];
bool od[ n + 1 ][ n + 1 ];
可变长度数组是非标准的。然而,如果它们是,那么更有可能超出了默认堆栈大小。
相反,使用C++
本身,而不是扩展。使用std::vector
创建二维阵列。
#include <vector>
//...
int y = 1, n, m, x = 1, a, b;
cin >> n >> m;
std::vector<std::vector<long long>> (n+1, std::vector<long long>(n+1));
std::vector<std::vector<bool>> (n+1, std::vector<bool>(n+1));
代码的其余部分不需要更改(假设您在问题中发布的是整个代码)。
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- EASTL矢量<向量<int>>连续的
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- 将 lambda 表达式传递给 std::function in C++
- @CPPFLAGS@在 Makefile.in 中意味着什么?