为什么我得到一个分割错误在这个代码
Why do I get a Segmentation fault in this code?
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <stack>
#include <queue>
#include <utility>
#include <functional>
#include <cmath>
#include <climits>
using namespace std;
#define pb push_back
#define mp make_pair
#define ll long long
int main (void)
{
int i,j,k,n;
int arr[500001];
long long ans[500001];
int val = INT_MIN;
cin>>n;
for ( i = 0; i < n; i++ )
{
cin>>arr[i];
if (val < arr[i])
val = arr[i];
}
long long count[500001];
for ( i = 0; i < n; i++ )
count[arr[i]]++;
//int ans = INT_MIN;
ans[0] = 0;
ans[1] = count[1];
for ( i = 2; i <= val; i++ )
{
ans[i] = max(ans[i-1],ans[i-2]+count[i]*i);
}
cout<<ans[val]<<"n";
return 0;
}
所以,我实现了这个简单的代码,在我声明3个数组,并尝试根据我的问题稍微调整一下(这是一个单独的事情)。但是,一旦我启动这个代码,我显示分割错误。我不知道为什么?为什么会发生这种情况?我试图通过调试器运行它,它显示了max函数中可能出现的错误。因此,我做了自己的maxi
函数,但它仍然显示分割错误?
编辑:在使用调试器时,它显示以下内容:
template <class _Tp, class _Compare>
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
const _Tp&
max(const _Tp& __a, const _Tp& __b, _Compare __comp)
{
return __comp(__a, __b) ? __b : __a;
}
Thread 1: EXC BAD_ACCESS (code=2, address=0x7fff5f276154)
应该有堆栈溢出
考虑使用new[]
分配足够而不是过多的内存。
对于临时修复,在int
或long long
之前添加static
到三个非常大的数组。
相关文章:
- C++映射分割错误(核心转储)
- 由cin中的字符串中未捕获空白引起的分割错误
- 删除映射和分割错误中的一个过去结束元素
- 在指向函数中读取变量时出现分割错误
- 在链表中的第 n 位插入显示分割错误
- 较高值 n 的分割错误(例如 n=999997)
- 尝试通过memcpy复制大尺寸浮点向量时的分割错误
- 分割错误:向量中的擦除功能
- 向量向量的分割错误
- 我在C++中编写了一个方法来打印树类的预序,但它显示了分割错误
- C ++分割错误,为什么使用"long long"我没有得到答案?
- 在尝试使用递归查找集合子集的总数时,我遇到了分割错误
- 分割错误 11:尝试使用 cin 输入 B[1] 时
- 集合布局上的 Qt 分割错误
- 高达20亿的筛子会产生分割错误
- G :内部编译器错误:分割故障(程序CC1PLUS) - 我在哪里开始
- 二进制搜索树操作程序错误:分割故障(核心倾倒)
- 在给出正确的输出后,给出错误分割错误(核心转储)
- 得到错误分割错误(核心转储)进程返回139 (0x8B)
- 内部编译错误:分割错误在gcc.发送可变模板到struct时