关于爆栈问题——手动加栈

今天忽然遇见了一行很牛逼的代码:#pragma comment(linker, “/STACK:1024000000,1024000000”)
据说是手动加栈的,作为小白的我自然是只好各种查资料。

然后牵扯到了很多基础概念,C、C++、GCC、G++、把我搞得晕头转向,都分不清谁是谁了。
经查阅资料:
G++和C++都是C++语言的编译器,二者基本相同。
而GCC和C都是C语言编译器,而这差别实际也不大。
尽管C++规范中兼容绝大部分C的用法和几乎全部函数,但毕竟还是有更改的地方。

ACM模版

解决爆栈,手动加栈

这个关系一下子真的有些分不清你你我我,但是可以肯定的是当我们用C++时,可以用上边的这句代码进行手动加栈。(#pragma comment(linker, “/STACK:1024000000,1024000000”))

而C时,我们则要说另外一句代码:#pragma GCC optimize (“O2”)
我想,对于这个02你应该会有一丝的警觉,02表示一种状态,那么是不是还有其他的状态呢?
对,这个真有。GCC的#pragma优化主要分为四种 -O0 -O1 -O2 -O3
-O0 表示无优化状态
-O1 表示对代码进行了优化
-O2 表示减小目标文件大小
-O3 表示减小代码段及栈空间的大小

对部分代码可以去除优化:
#pragma GCC push_options
#pragma GCC optimize (“O0”)

或者也可以增加优化
#pragma GCC pop_options

另外要说的是,想要对代码进行进一步的优化,可以使用输入加速外挂,对C、C++均可行。

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
11-04 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务