gpt4 book ai didi

c++ - 堆栈分配是 RT 吗?

转载 作者:搜寻专家 更新时间:2023-10-30 23:55:14 27 4
gpt4 key购买 nike

如果我在堆栈上分配一些东西,分配是确定性的(即 RT)吗?分配示例:

std::vector<double> desiredMobileState(13, 0.0);

我的意思是在堆上分配需要一个系统调用(在一般情况下),这是不确定的,因此应该禁止 RT 行为。

但是在 RT 行为方面堆栈分配会发生什么情况?

最佳答案

std::vector 对象本身是堆栈分配的,但该对象仅由指向堆分配数据数组的指针组成。 (当然,C++ 标准从不使用“堆栈”或“堆”等词;上面这句话只是通常的实现。)因此分配容量为 13 的 vector 几乎肯定会涉及堆分配。

但是,

allocating on the heap requires a system call (whatever the system)

不一定如此。大多数堆分配不需要与系统进行任何交互。的确,在大多数系统上,一些堆分配需要系统调用(修改虚拟内存映射),因此它们不能被认为是实时的,但很有可能想象一个非基于虚拟内存的嵌入式系统,其中应用程序具有固定的内存分配,而 malloc 要么交出部分内存,要么失败。 [注1]

您可以使用自定义分配器,从预留池中分配内存区域,但为了保证 RT,您还需要确保预留池驻留在内存中。


注释。

  1. 或者你可以只记得 DOS/Apple;无需生动的想象力。

关于c++ - 堆栈分配是 RT 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32700770/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com