全局变量区的大小是固定的吗

Kenzo0505 2017-09-21 09:11:44
如果是固定的 stl容器或者是string这些不定长的变量应该怎么存储
如果不是固定的 那是怎么动态分配大小的
...全文
536 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cain-won 2017-09-22
  • 打赏
  • 举报
回复
全局变量在你声明时肯定是要指定类型的,类型指定了,大小当然也是固定了的
  • 打赏
  • 举报
回复
引用 楼主 Kenzo0505 的回复:
如果是固定的 stl容器或者是string这些不定长的变量应该怎么存储 如果不是固定的 那是怎么动态分配大小的
这些变量里面填写的是指针,指向堆内存的。 指针所占的空间是固定的,指向的空间是不固定的。
赵4老师 2017-09-22
  • 打赏
  • 举报
回复
VMMap 是进程虚拟和物理内存分析实用工具。http://technet.microsoft.com/zh-cn/sysinternals/dd535533
  • 打赏
  • 举报
回复
引用 3 楼 cfjtaishan 的回复:
[quote=引用 1 楼 zjq9931 的回复:] [quote=引用 楼主 Kenzo0505 的回复:] 如果是固定的 stl容器或者是string这些不定长的变量应该怎么存储 如果不是固定的 那是怎么动态分配大小的
这些变量里面填写的是指针,指向堆内存的。 指针所占的空间是固定的,指向的空间是不固定的。 [/quote] 你说的这些指针应该是局部变量,而不一定是全局变量。 全局变量区是内存的一块区域,用于存放程序中定义的全局变量(包括只读数据段,静态数据段等)。这部分应该是固定的,一般会比较大。[/quote] stl容器,string这些变量是边长的对吧?怎么实现边长呢?内部有指针,指向动态分配的内存,但全局变量本身的大小是固定的。 例如下面的结构:

struct mudArray{
      char *pc;
      int iLen;
};
上面的结构,如果有一个全局变量对象,那么他本身的大小是8个字节(32位程序),但它的可变长度可以是1K,1M,1G等等。
自信男孩 2017-09-22
  • 打赏
  • 举报
回复
引用 5 楼 zjq9931 的回复:
[quote=引用 3 楼 cfjtaishan 的回复:] [quote=引用 1 楼 zjq9931 的回复:] [quote=引用 楼主 Kenzo0505 的回复:] 如果是固定的 stl容器或者是string这些不定长的变量应该怎么存储 如果不是固定的 那是怎么动态分配大小的
这些变量里面填写的是指针,指向堆内存的。 指针所占的空间是固定的,指向的空间是不固定的。 [/quote] 你说的这些指针应该是局部变量,而不一定是全局变量。 全局变量区是内存的一块区域,用于存放程序中定义的全局变量(包括只读数据段,静态数据段等)。这部分应该是固定的,一般会比较大。[/quote] stl容器,string这些变量是边长的对吧?怎么实现边长呢?内部有指针,指向动态分配的内存,但全局变量本身的大小是固定的。 例如下面的结构:

struct mudArray{
      char *pc;
      int iLen;
};
上面的结构,如果有一个全局变量对象,那么他本身的大小是8个字节(32位程序),但它的可变长度可以是1K,1M,1G等等。[/quote] 动态分配的内存不在全局区,实在堆上申请的。string类型定义的变量在函数里定义的是局部变量,若是定义在函数外是全局的,若是动态申请空间,那是在堆上上申请的。
自信男孩 2017-09-22
  • 打赏
  • 举报
回复
http://blog.csdn.net/u013153966/article/details/51084337
参考一下这位博主的博客吧
自信男孩 2017-09-22
  • 打赏
  • 举报
回复
引用 1 楼 zjq9931 的回复:
[quote=引用 楼主 Kenzo0505 的回复:] 如果是固定的 stl容器或者是string这些不定长的变量应该怎么存储 如果不是固定的 那是怎么动态分配大小的
这些变量里面填写的是指针,指向堆内存的。 指针所占的空间是固定的,指向的空间是不固定的。 [/quote] 你说的这些指针应该是局部变量,而不一定是全局变量。 全局变量区是内存的一块区域,用于存放程序中定义的全局变量(包括只读数据段,静态数据段等)。这部分应该是固定的,一般会比较大。

64,654

社区成员

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

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