代码之家  ›  专栏  ›  技术社区  ›  user2320492

Green Hills完整性下的C++内存分配使用

  •  1
  • user2320492  · 技术社区  · 7 年前

    对不起,我是新手。我正在使用MULTI 6.1.6,我选择的语言是C++。

    我有一个问题,当试图使用模拟器来启动一个对象的类大于1米的大小使用新的。

    Class_Big* big_obj;
    Class_Big = new Class_Big();
    Class_Small* Small_obj;
    Small_obj = new Class_Small();
    

    如果sizeOf(Class\u Big)>1MB它只是从不调用类构造函数,返回NULL并转到下一条指令(class\u Small*Small\u obj;)并正确创建下一个对象。如果我在类上找出一些变量,使其变大<1MB代码运行良好,对象已创建。

    我加了两个

    MemoryPoolSize="0x200000"
    HeapSize="0x200000" 
    

    到我的xml文件。

    如果我使用lib拥有一个大类,则在构建阶段会出现另一个错误:

    intex: error: Not enough RAM for request.
    intex: fatal: Integrate failed.
    Error: build failed
    

    你能帮忙吗?

    谢谢

    3 回复  |  直到 7 年前
        1
  •  2
  •   9Breaker    7 年前

    要指定堆和内存池的内存大小,请在多GUI中转到。int文件(展开时可以在.gpj下拉菜单下找到)并双击它进行编辑。然后在紫色框内单击鼠标右键,进入“编辑”。转到“属性”选项卡,可以将内存池大小和堆大小修改为更大。

    也可从其手册中获得:

    “检查正在使用的.bsp文件。使用 MinimumAddress/MaximumAddress关键字必须与主板内存匹配。 如果没有,请根据需要修改这些关键字。如果内存 应用程序使用更少的内存。"

    此外,请选中默认值。ld,您可以在那里设置RAM限制的值。看看这里的_uintegrity\u RamLimit和其他值。希望这有帮助!

        2
  •  1
  •   bazza    7 年前

    通过INTEGRITY,您可以完全控制每个分区使用的内存量。这是一种静态配置。所有的东西,你所说的代码堆栈,都来自于此。因此,如果您在分区中有一堆代码、自动程序等,那么如果您要求太多,内存分配可能会失败。试着增大尺寸。

        3
  •  0
  •   user2320492    7 年前

    对于问题的第一部分,基本上我应该修改上的“VirtualHeapSize”。ld组件文件。

    第二部分仍然试图找出答案。