小编g0x*_*0x0的帖子

为什么 Friend 函数不能访问类的私有成员

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 传递给打印机,但它仍然失败

c++ class friend-function

3
推荐指数
1
解决办法
68
查看次数

valgrind 的 C++ 程序内存使用信息错误?

我正在使用 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)

c++ memory valgrind

0
推荐指数
1
解决办法
303
查看次数

标签 统计

c++ ×2

class ×1

friend-function ×1

memory ×1

valgrind ×1