24小时热门版块排行榜    

查看: 1956  |  回复: 17

小桥流水1102

新虫 (初入文坛)

[求助] c++ 程序编译出错 内存不足 已有2人参与

c++ 程序, 定义Max为10000时,可以编译成功,定义其为1.2 万或更大时,编译出错,报错信为  (.text+0x67): relocation truncated to fit: R_X86_64_32 against symbol `filename_luna' defined in .bss section in /tmp/icpcoQx3ZW.o。。。

使用 g++ -mcmodel=large  666.cpp 可以编译成功,但不能运行 编译后的可执行程序,报错信息为Killed。

求大神指点下。谢谢


c++ 程序 如下:

const int    Max = 10000;
const double rfac=1.25;
struct coordi
{
    string name;
    double x;
    double y;
    double z;
};
typedef pair<int,double>tw;
string filename_luna;
string filename_xyz,filename_out, filename_tem;

int n;
coordi coo1[Max];
vector<tw> QQ[Max];      
vector<int> pis[Max];  
int n_dan;
bool vis[Max];
bool visited[Max];

double dist[Max][Max];
double rdist[Max][Max];
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

neweroica

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
小桥流水1102: 金币+5, ★★★很有帮助 2016-01-26 20:36:45
小桥流水1102: 回帖置顶 2016-01-26 20:38:04
两个double的二维巨型数组[Max][Max],似乎内存不够分配的。如果不要求太高精度,可以试试float。实在不行,可以考虑用读写文件的方式来存储大型数据。
Simpler, stronger, more tolerant
7楼2016-01-25 20:41:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fmying

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
小桥流水1102: 金币+5 2016-01-26 20:37:06
小桥流水1102: 回帖置顶 2016-01-26 20:38:23
小桥流水1102: 金币+5, ★★★很有帮助 2016-01-26 20:38:38
-mcmodel定义程序某些部分能获取的空间大小:
-mcmodel=small stack部分(静态数组,全局变量等)只能限制在2GB以内,.text部分也是如此。
-mcmodel=medium stack部分不受限制,.text部分2GB受限
-mcmodel=large stack和.text部分都不受限

查了一下,似乎不同版本的编译器对mcmodel的参数设置有些不同,但是意思是差不多的。lz遇到的问题就是因为全局的静态变量(在栈中)太大了,超出了限制。
如果使用malloc/new等动态分配的话,使用的是堆(heap)中的空间,该空间除了受物理内存大小限制外,没有限制。不过用malloc分配的内存用完后一定要记得free掉,不然会有内存泄漏的问题。
上善若水
10楼2016-01-25 23:19:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fmying

银虫 (小有名气)

引用回帖:
16楼: Originally posted by 小桥流水1102 at 2016-01-26 15:13:53
谢谢,定义这种动态数组,是不是较占计算机 内存。...

不会。恰恰相反,使用动态数组可以更好更灵活地利用内存完成你自己需要的计算。
因为随着计算体系和要求的不同,内存消耗的关键点是不一样的。因此动态内存才是更好的选择。
从调用速度来说,stack的速度更快一些,但是heap其实也慢不了很多。动态内存的优势远大于其劣势。
不过用好动态内存关键在于对指针的调用有清晰的认识,不然程序会写得更乱。
上善若水
17楼2016-01-26 17:40:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

chenshuai000

金虫 (正式写手)

2楼2016-01-24 22:54:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chenshuai000

金虫 (正式写手)

3楼2016-01-24 22:57:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小桥流水1102

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by chenshuai000 at 2016-01-24 22:57:16
是stack overflow么?

感觉是的。由什么对策吗?
c++ 不大懂, 为什么采用 g++ -mcmodel=large  666.cpp 可以编译成功?
4楼2016-01-24 23:15:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chenshuai000

金虫 (正式写手)

把软件的stack size改大点,

发自小木虫Android客户端
5楼2016-01-25 08:17:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小桥流水1102

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by chenshuai000 at 2016-01-25 08:17:48
把软件的stack size改大点,

怎么修改?
6楼2016-01-25 20:00:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小桥流水1102

新虫 (初入文坛)

引用回帖:
7楼: Originally posted by neweroica at 2016-01-25 20:41:40
两个double的二维巨型数组,似乎内存不够分配的。如果不要求太高精度,可以试试float。实在不行,可以考虑用读写文件的方式来存储大型数据。

谢谢您的回答,我试试,可否做成动态数组?不知其运行效率如何?
8楼2016-01-25 20:54:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

neweroica

木虫 (著名写手)

引用回帖:
8楼: Originally posted by 小桥流水1102 at 2016-01-25 20:54:58
谢谢您的回答,我试试,可否做成动态数组?不知其运行效率如何?...

你指动态内存分配?
Simpler, stronger, more tolerant
9楼2016-01-25 22:17:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 小桥流水1102 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 岩土工程学报什么时候才能终审完呐 25+3 yeager111 2026-08-10 4/200 2026-08-16 20:42 by tfang
[基金申请] 时间戳又变了8-15 +13 archvillain 2026-08-15 25/1250 2026-08-16 20:13 by zhaosm1982
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +3 Tide man 2026-08-14 3/150 2026-08-16 17:47 by jurkat.1640
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +9 Ldrop2023 2026-08-13 9/450 2026-08-16 13:24 by wukun_007
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] filecode=后面第一个是大写字母 +6 wangze12014 2026-08-14 7/350 2026-08-15 20:12 by gltch
[基金申请] 小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊 +12 Tide man 2026-08-10 13/650 2026-08-15 16:34 by 氺木
[基金申请] 关于Filecode分析方法 +10 majunge000 2026-08-10 13/650 2026-08-15 12:26 by hanpeng972
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] filecode +15 documentary 2026-08-10 17/850 2026-08-14 10:08 by kissu88
[基金申请] FileCode能看出啥? +10 要乐观耀哥 2026-08-10 32/1600 2026-08-14 09:37 by 要乐观耀哥
[基金申请] 静等基金结果 +8 gjjjzhong 2026-08-10 21/1050 2026-08-13 17:56 by 且听虎啸
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 7/350 2026-08-11 19:25 by Tide man
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
信息提示
请填处理意见