Qt 为什么QList对象的大小是4字节?
当尝试使用Qt 为什么QList对象的大小是4字节?,qt,sizeof,qlist,Qt,Sizeof,Qlist,当尝试使用sizeof()函数获取QList对象的大小时,它给了我4个字节。 我试图更改列表中的项目数,它也给出了4个字节? 我试图更改列表中项目的类型,但还是给出了4个字节 为什么项目数量或类型的更改不会影响对象大小?要获取列表中的项目数量,请使用QList::size()而不是sizeof()。大概是这样的: QList<MyObject> list; list.append(object1); list.append(object2); int size = list.size
sizeof()
函数获取QList
对象的大小时,它给了我4个字节。
我试图更改列表中的项目数,它也给出了4个字节?
我试图更改列表中项目的类型,但还是给出了4个字节
为什么项目数量或类型的更改不会影响对象大小?要获取列表中的项目数量,请使用
QList::size()
而不是sizeof()
。大概是这样的:
QList<MyObject> list;
list.append(object1);
list.append(object2);
int size = list.size();
QList列表;
list.append(object1);
list.append(object2);
int size=list.size();
sizeof()
返回QList
类的大小,就像Qt类通常的情况一样,它只由一个成员组成:指向私有结构的指针。假设您在32位操作系统上,存储地址需要4个字节,因此sizeof(list)
返回4。sizeof
提供对象本身的编译时大小,而不是它可能指向的数据
QList
是一个包含指向数据结构的指针的类,该数据结构实际上包含指向堆分配数据的指针;在所有这些东西中,sizeof
只知道(并关心)第一位-QList
只包含一个指针,因此它有4个字节大
如果你这么做的原因也是一样的
int n;
std::cin>>n;
int *foo = new int[n];
std::cout<<sizeof(foo);
delete[] foo;
intn;
标准:cin>>n;
int*foo=新的int[n];
std::coutBecause它只是一个指向实际数据的指针,32位指针是4个字节。是的!这是c++经过这么长时间,我认为这是正确的答案