Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 为什么QList对象的大小是4字节?_Qt_Sizeof_Qlist - Fatal编程技术网

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++经过这么长时间,我认为这是正确的答案