どのオブジェクトがスタックまたはメモリをいじっているのかを理解するためにコードを変更した方法に応じて、バグ、segfault、またはbad_allowを見つけようとして、おそらく3時間以上費やしました。すべてのオブジェクトを疑います。 ..クラスを虐殺しました...(それでも、これらのクラスは最終的に役に立たないことが明らかになったので、これは良いことがわかりました:-))...
しかし、実際のところ、本当の間違いは単純でした:
関数内に値を返す必要がある return ステートメントを記述していませんでした (私の場合は a を返す必要がありましたstd::vector<boost::any>
)。
gcc (4.6.3)はそれなしではコンパイルできなかったと思いました。そして、 ms visual 2010で同様のことが起こったことを思い出すと、さらに奇妙に感じます。
だから今、returnステートメントを書かないのは合法かどうか疑問に思っています?? そのような場合はどうなりますか?
main が戻り値を持つことができるかどうかと関係がありますか? または、 gcc 4.7への移行を検討する必要がありますか?