风不止G 2023-04-20 12:46 采纳率: 0%
浏览 59

C++申请类对象数组内存大小的问题

img

如图,为啥申请了44字节的内存,而不是40字节。
类对象4字节,申请了10个,不应该是40字节吗?

附代码

#include <iostream>



void* operator new [](std::size_t size)
{
    std::cout << "operator new [] " << std::endl;
    std::cout << "new [] size is " << size << std::endl;

    return std::malloc(size);
}

class Foo {
public:
    Foo() { std::cout << "Foo()" << std::endl; }
    virtual ~Foo() { std::cout << "~Foo()" << std::endl; }
};

int main()
{
    char* test = new char[700];
    
    Foo* yzm_foo = new Foo[10];

    std::cout << "size of test is " << sizeof(test)  << "\n" << std::endl;

    delete test;
    return 0;

}


  • 写回答

3条回答 默认 最新

  • 韩楚风 领域专家: 数据库技术领域 2023-04-20 13:21
    关注

    还有一个虚函数指针4字节。虚函数内部类似指针实现,不同类对象指向不同的实现。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 4月20日
  • 修改了问题 4月20日
  • 创建了问题 4月20日