【发布时间】:2023-03-25 22:47:02
【问题描述】:
所以我想要一个带有这样一个结构数组的缓冲区:
EventItem
{
tag; // some string or array of characters to describe the value;
value; // some integer or something
}
该值可以是 int32 之类的任何值。我关心的是标签。如果我有一个这些对象的数组,并且我将标签设为字符串,那么如果用户将 EventItem 输入到这个具有长标签的缓冲区中会发生什么?这是否会导致缓冲区或其中的一部分被复制到内存中的其他位置来保存这个更大的 EventItem(因为这个长字符串而更大)?
使用数组而不是字符串,仅使用固定数量的字符来限制标签对我来说会更好吗?
显然我不知道我在说什么,但我不知道如何在不知道 EventItems 大小的情况下使用正确数量的连续空间创建缓冲区。
谁能为我解释一下这种情况会怎样?
提前非常感谢!
【问题讨论】:
-
在不知道其他细节的情况下很难发表评论,例如是与C模块需要(POD)兼容所需的数据结构。
-
感谢您的回答。你们很多人都说不要担心它,因为它会照顾好自己。这将是另一个循环缓冲区内的循环缓冲区。我将从 VME 设备每秒获取大约 30 MB 的数据,并且我想尽可能地减慢这个过程。我只是不知道复制和重新分配会在多大程度上发生。如果 String 将它的值存储在其他地方,那么我猜你们都是对的,没关系!谢谢