我试图理解将函数定义为friend function
如何影响其在内存(RAM)中的位置。
例如,每个类都有一个包含其所有方法和函数的表。此外,虚拟函数放在vtable
。
friend
个函数属于哪里?
我担心的原因是由于[递归]函数已经通过我的c ++代码中的多个线程调用了很多次,最终我得到&# 34; v'表损坏运行时异常" 。这是内存损坏的标志(例如as I saw here)。
此外,当将此函数声明为常规的类外函数时,异常仍然存在。
当声明该功能为friend
时(它设计不好,但为了实验),该异常不再弹出。
因此我的问题是关于朋友的功能'记忆位置。
答案 0 :(得分:8)
friend
与编译器,链接器或运行时加载器放置函数的位置无关,它只是一个告诉编译器函数可以回避类的可见性规则的关键字。 / p>
即使在类中内联定义friend
函数,它仍被视为全局非成员函数。