关于手动扩栈 OJ 上 RE 的问题
  • 板块学术版
  • 楼主abcdeffa
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/2/27 20:21
  • 上次更新2023/11/5 02:37:24
查看原帖
关于手动扩栈 OJ 上 RE 的问题
314535
abcdeffa楼主2021/2/27 20:21

由于 OJ 栈空间和空间限制大小不相同,于是用下列代码进行了手动扩栈。

int size = 256 << 20; // 256MB  
    char *p = (char*)malloc(size) + size;  
    __asm__("movl %0, %%esp\n" :: "r"(p));

加上这段以后 RE 了,OJ 提示“Dangerous System Call”。之前的一些题目用这段代码都是没有问题的,想请教一下各位可能是什么问题?

另外,之前试过把这段代码和 O2 搭配使用发现它和 O2 不能并存,这是为什么?因为不是在洛谷上评测的,所以不存在不允许手动开 O2 这回事。单独使用 O2 能够编译成功。

2021/2/27 20:21
加载中...