看看呗

__lhy 2012-06-15 04:03:55
http://topic.csdn.net/u/20120614/12/563807c8-d48f-49ad-9ee3-63e8e628252f.html

struct sname
{
int a;
string b;
};
class c
{
sname d[100];
}

请问最终这个数组 d 是建在堆上 还是栈上了?

我的回复:
c obj1;//栈分配
c *obj2=new c;//堆分配

其他人的回复:
栈分配
...全文
112 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeicy2007 2012-06-15
  • 打赏
  • 举报
回复
还真是,忽略这点了,经验不足啊。前两天笔试题还写过string各种函数呢

[Quote=引用 8 楼 的回复:]

你没有想过string可长可短,这是为什么呢,怎么实现的呢?
string a="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
string b="a";
所以内部肯定有动态内存分配,也就是在堆内存上分配了空间。只不过是string类内部实现的,不需要你去释放

自己实现一下string类这样……
[/Quote]
tongzhipeng5699 2012-06-15
  • 打赏
  • 举报
回复
你没有想过string可长可短,这是为什么呢,怎么实现的呢?
string a="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
string b="a";
所以内部肯定有动态内存分配,也就是在堆内存上分配了空间。只不过是string类内部实现的,不需要你去释放

自己实现一下string类这样的笔试题应该都出烂了,楼主做过就会稍微了解一点了。
[Quote=引用 7 楼 的回复:]

为什么会有堆上的呢?程序会自动在堆上分配内存吗
[/Quote]
freeicy2007 2012-06-15
  • 打赏
  • 举报
回复
为什么会有堆上的呢?程序会自动在堆上分配内存吗
pathuang68 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
http://topic.csdn.net/u/20120614/12/563807c8-d48f-49ad-9ee3-63e8e628252f.html

struct sname
{
int a;
string b;
};
class c
{
sname d[100];
}

请问最终这个数组 d 是建在堆上 还是栈上了?

我的回复:
c obj1;……
[/Quote]

堆上、栈上都有。
W170532934 2012-06-15
  • 打赏
  • 举报
回复
其实楼主说的不准确。请问:string b;会再什么地方申请内存??肯定是有堆空间的
__lhy 2012-06-15
  • 打赏
  • 举报
回复

看我的结贴率!
sevancheng 2012-06-15
  • 打赏
  • 举报
回复
得看class C怎么实例化的
赵4老师 2012-06-15
  • 打赏
  • 举报
回复
string是对象不是一段内存,不能放在struct中。
qixing1115 2012-06-15
  • 打赏
  • 举报
回复
c obj1;//栈分配
c *obj2=new c;//堆分配

局部变量无new/malloc等,为栈
局部变量有new/malloc等,为堆
全局变量在bss,
总之d跟类的实例在同一个地方

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧