【问题标题】:Does size of shared memory change during execution?共享内存的大小在执行过程中会发生变化吗?
【发布时间】:2013-08-20 07:02:53
【问题描述】:

我用 C++ 实现的共享内存有一个链表。当我向链表添加元素时,它的大小会自动改变(就像它是一个普通的堆分配元素)还是应该只包含固定大小的结构,比如固定大小的数组?

【问题讨论】:

  • 你知道链表是​​如何工作的吗?当添加一个新元素时,它只是动态添加的,并且一个指针将从前一个数据元素指向它。那应该回答你的问题,是吗?如果不是,您能否详细说明真正的问题是什么?
  • 你应该更仔细地阅读我的问题。我很清楚链表是如何工作的。在日常生活中,我们在堆上创建链表,动态分配内存。但是在我的问题中,我已经声明我在共享内存区域中创建了一个链接列表,并且您可能会猜到共享内存区域具有与堆不同的固定大小。所以我问是否可以初始化共享内存区域,这样当我们添加新的插入时,它的初始大小不会成为问题。我的意思是它会表现得像堆。但我认为这是不可能的。
  • 嗯,当然是固定大小的。否则,如果你不能提前做足够大,你将需要创建另一个更大的。
  • 所以在你尝试回答问题之前请仔细阅读我的朋友。
  • 我仔细阅读了您的文章,我个人认为有些草率,有些不言自明。这就是我要求澄清的原因。

标签: c++ shared-memory heap-memory dynamic-memory-allocation


【解决方案1】:

在Windows或Linux等已知操作系统中,共享内存的大小是固定大小的,不能增长。您应该根据需要创建它足够大。我认为唯一的方法是创建另一个共享内存并将数据复制到其中。

【讨论】:

  • 谢谢,不幸的是,你的回答和我猜的一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 2013-03-04
  • 1970-01-01
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
相关资源
最近更新 更多