我最近一直在写 SEC 算法(比如这里http://18.7.29.232/bitstream/handle/1721.1/4015/HPCES024.pdf?sequence=2
)。起初是递归版本,它似乎抛出“堆栈溢出”异常超过 200000 点。直到我把它写在我自己的堆栈上(使用迭代而不是递归)我才知道为什么,它在 1000000 点上工作得很好。
我相信当我调用函数时,处理器和变量的指令会被复制到一些“随机”分配的内存中。我还认为,当我有一个类向量的全局变量时,它需要有一些紧凑的内存(如表)。
问题是当我有大量的函数调用时(例如在某些递归算法中),因为(在我看来)当内存被分成小部分时,向量不能“放大”并引发“堆栈溢出”异常。
所以我认为我可以以某种方式说服 c++ 应该在哪里存储函数实例内存。就像这里http://www.parashift.com/c++-faq-lite/placement-new.html制作一些“函数实例”表,所以它不会弄乱内存。
可能吗?