class A{
public:
void printer(){
B obj;
obj.private_data = 10; // <- fails, says member inaccessible
}
}
class B{
friend void A::printer();
private:
int private_data;
}
Run Code Online (Sandbox Code Playgroud)
打印机功能是否可以访问 B 类的私有成员?我试图将 B 的 obj 作为 arg 传递给打印机,但它仍然失败
我正在使用 valgrind 使用此命令查找我的程序的内存使用情况
valgrind --tool=memcheck --leak-check=full -s --track-origins=yes ./memoryProblem
Run Code Online (Sandbox Code Playgroud)
它显示我的程序的总堆使用量为 72,704 字节
这是我的程序
#include <iostream>
int main(int argc, char const *argv[])
{
int a[32768];
std::cout << sizeof a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
int 是 4 个字节,32768*4 应该是 131,072 个字节,这也是程序的输出,但是为什么 valgrind 显示堆栈上数组的堆使用情况?
此外,我删除了 iostream 和 cout 并将数组大小减少到 10 个整数,这是输出:
==169343== Memcheck, a memory error detector
==169343== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==169343== Using Valgrind-3.17.0 and LibVEX; rerun with -h for copyright info
==169343== Command: ./memoryProblem
==169343== …Run Code Online (Sandbox Code Playgroud)