相关疑难解决方法(0)

带有'this'指针的类的大小

没有数据成员的类的大小返回为1个字节,即使声明了隐含的"this"指针.返回的大小不应该是4个字节(在32位机器上)?我遇到过一些文章,表明"this"指针不计算用于计算对象的大小.但我无法理解这个原因.此外,如果任何成员函数声明为virtual,则类的大小现在返回为4个字节.这意味着计算vptr以计算对象的大小.为什么在计算对象大小时会考虑vptr并忽略'this'指针?

c++ sizeof

7
推荐指数
1
解决办法
3939
查看次数

我不明白为什么'Derived1'需要与'Derived3'相同的内存量

在下面的代码中,我不明白为什么'Derived1'需要与'Derived3'相同的内存量.Derived 4的大小也是16的任何特定意义.

#include <iostream>
using namespace std;

class Empty
{};

class Derived1 : public Empty
{};

class Derived2 : virtual public Empty
{};

class Derived3 : public Empty
{    
    char c;
};

class Derived4 : virtual public Empty
{
    char c;
};

class Dummy
{
    char c;
};

int main()
{
    cout << "sizeof(Empty) " << sizeof(Empty) << endl;
    cout << "sizeof(Derived1) " << sizeof(Derived1) << endl;
    cout << "sizeof(Derived2) " << sizeof(Derived2) << endl;
    cout << "sizeof(Derived3) " << …
Run Code Online (Sandbox Code Playgroud)

c++ oop

6
推荐指数
1
解决办法
194
查看次数

C++:是不是删除了一个对象/总是/内存泄漏?

class MyClass
{
    // empty class with no base class
};

int main()
{
    MyClass* myClass = new MyClass();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是内存泄漏吗?

c++ memory memory-leaks memory-management class

4
推荐指数
2
解决办法
229
查看次数

为什么在uni-processor上sizeof(spinlock_t)大于零?

以下行打印输出为4,而我期待0.

 printk(KERN_INFO "size of spinlock_t  %d\n", sizeof(spinlock_t));
Run Code Online (Sandbox Code Playgroud)

我在一个单CPU的系统上试过这个.构建内核时没有启用调试标志CONFIG_DEBUG_SPINLOCK or CONFIG_DEBUG_LOCK_ALLOC.根据内核头文件,它应该为零,但输出与它不一致,任何猜测?

linux kernel linux-kernel

2
推荐指数
1
解决办法
1227
查看次数

为什么类的大小是1字节的联盟成员?

我正在研究C++:以下是代码片段:

class my
{
  union o
  {
    int i;
    unsigned int j;
  };

  union f
  {
    int a;
    unsigned int b;
  };
};
Run Code Online (Sandbox Code Playgroud)

我发现类"my"的大小是1个字节.我不明白为什么值是1个字节?任何人都能解释一下这个结果吗?

c++ class unions

2
推荐指数
1
解决办法
112
查看次数

C和C ++中空结构的大小

空结构的sizeof在C中为0字节,但在C ++中为1字节。为什么?有什么不同?

c c++

2
推荐指数
1
解决办法
6373
查看次数

如何区分一个字符的空结构?

我正在尝试实现自己的函子,并面临空的捕获lambda。如何区分一个字符的空结构?编译时是否有“实际”大小?我只想忽略空的lambda以防止无用的分配。

struct EmptyStruct {};
struct CharStruct { char c; };


int main()
{
    char buffer1[sizeof(EmptyStruct)]; // size 1 byte
    char buffer2[sizeof(CharStruct)]; // size 1 byte
}
Run Code Online (Sandbox Code Playgroud)

c++ struct is-empty

2
推荐指数
1
解决办法
44
查看次数

sizeof(空白类)== 1.为什么?

可能重复:
C++:空类对象的大小是多少?

#include <iostream>

class C
{
};

int main()
{
    std::cout << sizeof(C) << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:1

为什么1,但不是零?

c++

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

没有数据的类的对象是否会占用内存?

可能重复:
C++:空类对象的大小是多少?

我有一个没有数据的类,如下所示

class A {};
Run Code Online (Sandbox Code Playgroud)

我用它来定义一个对象

A a;
Run Code Online (Sandbox Code Playgroud)

我认为对象"a"有一个地址,对吗?它会占用一些记忆吗?如果是这样,它占用了多少字节?

如果对象"a"的类型为void,会发生什么.非常感谢!

c++

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

编译器是否优化大小为0的结构?

如果我有一个定义的结构,如下所示:

struct blank {
    int : 0;
};
Run Code Online (Sandbox Code Playgroud)

编译器会在运行时将其优化为零吗?

我问,因为这个相当受欢迎的SO问题.我想在我自己的C/C++代码中使用类似的编译时检查.我正在尝试使程序尽可能最佳,所以如果我只是将它们用于编译时检查,我不希望这些空结构在运行时闲置.

另一方面,是否有一种C++ - 惯用的方式来实现与链接相同的结果?

c++ struct compile-time compiler-optimization

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

为什么sizeof运算符不计算函数的大小

class Test
{
   void func(){int i;}
};

int main()
{
   cout<<sizeof(Test)<<endl; //gives 1
}
Run Code Online (Sandbox Code Playgroud)

为什么sizeof(Test)不考虑函数的大小.功能在哪里真正与它的身体存储?在Google中找不到任何链接来解释这一点.

编辑:如果除了维基之外提供有关类内部分的任何好的链接,那将是很好的.

c++ sizeof

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