C++ c++;朋友的功能在记忆位置上有什么不同?

C++ c++;朋友的功能在记忆位置上有什么不同?,c++,friend-function,C++,Friend Function,我试图理解将函数定义为朋友函数如何影响它在内存(RAM)中的位置 例如,每个类都有一个包含其所有方法和函数的表。此外,虚拟函数被放置在vtable中 朋友的功能属于哪里? 我之所以担心,是因为在我的C++代码中通过多个线程调用了大量的递归函数,最后我得到了“vt表腐败运行时异常”。这是内存损坏的标志(例如) 另外,当将此函数声明为常规类外函数时,异常仍然存在 然而,当将该函数声明为friend时(这是一个糟糕的设计,但出于实验目的),该异常不再弹出 因此,我的问题是关于friend函数的内存位置

我试图理解将函数定义为朋友函数如何影响它在内存(RAM)中的位置

例如,每个类都有一个包含其所有方法和函数的表。此外,虚拟函数被放置在
vtable

朋友的功能属于哪里?

我之所以担心,是因为在我的C++代码中通过多个线程调用了大量的递归函数,最后我得到了“vt表腐败运行时异常”。这是内存损坏的标志(例如)

另外,当将此函数声明为常规类外函数时,异常仍然存在

然而,当将该函数声明为
friend
时(这是一个糟糕的设计,但出于实验目的),该异常不再弹出


因此,我的问题是关于friend函数的内存位置。

friend与编译器、链接器或运行时加载程序将函数放置在何处无关,它只是一个关键字,告诉编译器函数可以避开类的可见性规则


即使一个
friend
函数是在一个类中内联定义的,它仍然被认为是一个全局非成员函数。

“每个类都有一个包含其所有方法和函数的表”-你这样说是基于什么?在C++标准中没有提到它。FoeFor不是BeFrand类的成员函数,例如,每个类都有一个表,它的所有方法和函数。嗯,没有。有一个虚拟的vtable,但就是它。@Borgeader,即使那样,也可能没有。