何时分配C++类的成员函数的内存空间
When is the memory space for a member function of a class in C++ allocated?
在阅读时,我读到了这些关于C++中类成员函数的内存分配的相互矛盾的陈述。一位消息人士称,该空间是根据内存堆栈的需要分配给成员函数的。而另一个说空间是在创建该类的第一个对象时分配的。
另一方面,我有一个概念,即成员函数的空间是在编译或运行时本身开始时分配的,然后函数代码由该类的所有对象使用。
有人可以澄清和详细说明吗?谢谢。
什么记忆?需要内存来存储实际(编译的代码)和变量(数据)的内存。因此,您的两个答案都是正确的。
成员函数不增加类对象的内存使用,除非如果类具有虚函数,则它会保留指向虚函数表的指针。
与任何函数一样,如果无法访问程序中的函数,则成员函数可以没有定义。否则,链接器将发出错误,指出对函数的引用未定义。
编译器为成员函数生成代码的方式与为非成员函数生成代码的方式相同。所以如果有成员函数的定义,编译器什么时候会生成相应的代码。
我认为你的意思是模板类的成员函数,那么如果使用它们,它们确实会被实例化。
相关文章:
- 从构造函数抛出异常时如何克服内存泄漏
- 对具有动态分配的内存和析构函数的类对象的引用
- 调用析构函数以释放动态分配的内存
- std::unordered_map析构函数不释放内存?
- 从构造函数内存泄漏引发异常
- C++函数:内存访问次数
- 运算符过载、析构函数内存泄漏
- 测量cpp中的函数内存使用情况
- C++:链表析构函数内存泄漏
- C++图形函数内存泄漏(valgrind在线上没有具体说明)
- 成员函数内存分配堆栈或堆
- 构造函数 - 内存分配失败
- System::字符串到char*函数.内存泄漏
- 使用std::swap的C++函数内存泄漏
- 错误:malloc():排序的比较函数内存损坏
- 函数内存不足-我该怎么办
- c++析构函数内存泄漏
- 将双精度转换为字符串函数-内存问题
- 常量迭代器的矢量构造函数内存分配,seg错误
- c++函数内存对齐