由于 OJ 栈空间和空间限制大小不相同,于是用下列代码进行了手动扩栈。
int size = 256 << 20;
char *p = (char*)malloc(size) + size;
__asm__("movl %0, %%esp\n" :: "r"(p));
加上这段以后 RE 了,OJ 提示“Dangerous System Call”。之前的一些题目用这段代码都是没有问题的,想请教一下各位可能是什么问题?
另外,之前试过把这段代码和 O2 搭配使用发现它和 O2 不能并存,这是为什么?因为不是在洛谷上评测的,所以不存在不允许手动开 O2 这回事。单独使用 O2 能够编译成功。