gcc抛出错误重定位被截断以适合:R_X86_64_32对抗`.bss'

时间:2016-07-15 19:02:29

标签: c++

#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
int dp[100000][100000];
int main()
{
    long int n;
    cin>>n;
    vector <int> a(n);
    for(long int i=0;i<n;i++)
        cin>>a[i];
    memset(dp,0,sizeof(dp));
    long long int maxi=0;
    for(long int i=0;i<n;i++)
    {
        for(long int j=i;j<n;j++)
        {
            dp[i][j]=dp[i][j-1]^a[j];
             dp[i][j]%=mod;
             if(maxi<dp[i][j])
                 maxi=dp[i][j];
        }
    }
    cout<<maxi;
    return 0;
}       

编译器抛出错误: 在函数_GLOBAL__sub_I_dp': (.text.startup+0x185): relocation truncated to fit: R_X86_64_32 against。bss'中 (.text.startup + 0x194):重定位被截断以适合:R_X86_64_32对抗`.bss' 错误:ld返回1退出状态 这是什么错误?

1 个答案:

答案 0 :(得分:0)

您的全局阵列占用40GB,您无法将其放入该计划的std::vector部分。它不适合那里。

即使它确实如此,你最终会得到一个巨大的二进制文件,所以这首先是一个坏主意。

如果您安装了45 + GB RAM,则可以使用动态分配(通过tableView.reloadData()),否则,请重新考虑您的代码以减少内存。

相关问题