C++-请深度剖析string *pString = new string[4];的实现机制及以下代码中的相关问题,谢谢。
/*
1. 运行环境VS2008
2. 请解释各行的输出为什么?
*/
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
string *pString = new string[4];
pString[0] = "aaaaa";
pString[1] = "bbbb";
pString[2] = "ccc";
cout << "sizeof(string) = " << sizeof(string) << endl;
cout << "sizeof(pString[0] = " << sizeof(pString[0]) << endl;
cout << "sizeof(pString) = " << sizeof(pString) << endl;
return 0;
}
/*
运行结果:
sizeof(string) = 32
sizeof(pString[0]) = 32
sizeof(*pString) = 32
*/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
string pString = new string[4];
这东西实际上就是给一个指针分配4个string单元的空间。和 int *pInt = new int[4];一样。如果硬要深度剖析的话,我想应该就是 首先 分配 4sizeof(string) 的内存,然后将 pString 指向这块内存的首地址。
sizeof(string) = 32。 string所占用的内存就是32,他的size之所以是32,因为它的所有非静态成员的总内存加上虚函数表指针(如果有的话) 为32.
sizeof(pString[0]) = 32。 pString[0]其实就是一个string对象,它的内存当然是32拉。
sizeof(*pString) = 32。和上面是一样的