私は、friend function
がメモリ(RAM)上の配置にどのように影響するかを理解しようとしています。C++友達の機能はどのようにメモリの場所が異なりますか?
たとえば、各クラスには、すべてのメソッドと関数のテーブルがあります。また、仮想関数はvtable
に配置されています。
friend
の関数はどこに属していますか?
私が心配している理由は、私のC++コードで複数のスレッドから多数回呼び出された[再帰]関数が原因で、最終的には"v'table破損ランタイム例外 "。これはメモリ破損の兆候です(例:as I saw here)。
また、この関数を通常のクラス外関数として宣言すると、例外が引き続き発生します。
しかし、この関数をfriend
と宣言すると(これは悪い設計ですが、実験のために)、その例外はポップアップしなくなりました。
友人の機能のメモリの場所について私の質問。
*「各クラスにはすべてのメソッドと関数の表があります」* - あなたは何に基づいて言いますか? C++標準には言及されていません。 – StoryTeller
フレンド機能は**有益なクラスのメンバ関数ではありません –
*たとえば、各クラスにはすべてのメソッドと関数の表があります。バーチャルのものにはvtableがありますが、それだけです。 – Borgleader