小编bhu*_*hni的帖子

对于不同的数据类型,sizeof(datatype_pointer)/ sizeof(datatype)的值不同,为什么?

我在我的C++程序中声明了以下结构:

    struct person {
        char name[10];      /* first name */
        char id[10];        /* ID number */
        off_t pos;      /* position in file, for demonstration */
    } people[] = {
        { "arnold", "123456789", 0 },
        { "miriam", "987654321", 10240 },
        { "joe",    "192837465", 81920 },
    };

        j = sizeof(people) / sizeof(people[0]);     /* count of elements */
Run Code Online (Sandbox Code Playgroud)

这里给出j = 3,即数组中没有元素; 总是即使你添加或减少元素......

         char b[8];
         i = sizeof(b)/sizeof(b[0]);
Run Code Online (Sandbox Code Playgroud)

在我的机器上给出i = a constant = 4的值.

现在这是合理的,因为sizeof(char*)在我的机器上是常量,而sizeof(char)也是常量.

但是一旦我声明了struct person,sizeof(person*)和sizeof(person)也应该是常量,并且它也应该产生一个常量值,不是吗?

c c++ arrays pointers sizeof

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

我们如何在与该类相同的数据类型的类中声明静态成员?

可能重复:
为什么允许类拥有自身的静态成员,而不是非静态成员?

这是一段无效的代码

struct a{
   a mem;    //Invalid as the compiler does not know how much memory to allocate
  };
Run Code Online (Sandbox Code Playgroud)

但这是有效的:

class Date{
  int d,m,y;
  static Date Default_date;  //Valid
};
Run Code Online (Sandbox Code Playgroud)

在Date数据类型甚至没有正确定义之前,编译器如何能够知道这里分配了多少内存!

这在某种意义上是否与其他静态定义不同?

c++ static class

0
推荐指数
2
解决办法
132
查看次数

如何将对象放在堆之外的其他地方?

我们可以在堆之外的其他地方放置动态分配的对象吗?我将如何定义一个重载的新运算符?

如果我有一些类竞技场

 class Arena{
      char area[2000];
 public:
      Arena(){}
 };
Run Code Online (Sandbox Code Playgroud)

Arena my_arena(1000);

我想从Arena my_arena分配对象..

此外,与在性能等上从堆分配相比,这种内存分配有哪些可能的缺点?

c++ heap dynamic

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

删除在不同函数中动态分配的对象时发生崩溃

我写了一个简单的程序:

#include<iostream>
#include<list>
using namespace std;
list<int>& func();

int main(){
    list<int> a = func();
    delete &a;
    std::cout<<"Here\n";
}

list<int>& func(){
    list<int>* ptr = new list<int>;
    return *ptr;
}
Run Code Online (Sandbox Code Playgroud)

这个程序永远不会打印Here到cout流....

它只是崩溃..

我无法找到原因..

c++ new-operator delete-operator heap-corruption

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