在C ++中,我有一个长度为[len]的uint8缓冲区。 当分配单个缓冲区时,我这样做:

uint8 *buffer= new uint8[len];

分配此类缓冲区数组的语法是什么? 这给了我一个语法错误:

uint8** buffers = new uint8[len]*[bufferCount];

#1楼 票数:2 已采纳

初始化2d数组的方式如下:

uint8** buffers = new uint8*[bufferCount];
for (int i = 0; i < bufferCount; i++)
    buffers[i] = new uint8[len];

#2楼 票数:1

#include <vector>

using byte_vector = std::vector<uint8_t>;
using byte_vector_vector = std::vector<byte_vector>;


// example of a 1-dimension vector
auto v1 = byte_vector(len, inital_value);

// example of a [2, len] vector
auto v_of_v = byte_vector_vector { 
  byte_vector(len, initial_value),
  byte_vector(len, initial_value)
};

// print the uint8 at (0,1)
std::cout << v_ov_v[0][1] << std::endl;

#3楼 票数:1

您询问

分配此类缓冲区数组的语法是什么?

您可以使用:

uint8** buffers = new uint8*[bufferCount];

但是,仅在出于某些原因绝对不是std::vector情况下才使用此选项。

  ask by MrSparkly translate from so

未解决问题?本站智能推荐:

2回复

数组缓冲区溢出

我一直在研究缓冲 程序不断运行,没有停止并且没有溢出迹象(在2个Linux盒子中进行了测试) 如果我交换,也会发生相同的情况: 与:
1回复

C ++:如何将char数组转换为通用类型T的缓冲区

我的任务是在通用类型T的模板中创建一个缓冲区。我得到了一个分配的char数组,我应该不使用STL将其转换为缓冲区。 我对其中的某些内容还是陌生的,我不知道如何获取该内存并将其转换为T的数组(知道T类型占用了多少空间)。 我尝试弄乱地址,但这似乎不起作用。 有人能帮我吗?
1回复

C ++中的缓冲区溢出[保留]

如何修复代码以包括适当的边界检查。 〜#include int main(void){int vals [10];
1回复

高效地将环形缓冲区(循环缓冲区)重新格式化为连续数组

我已经成功实现了一个功能,该功能可以将从环形缓冲区中任意点开始的任意数量的值复制到连续数组中,但是我想使其更加高效。 这是我的代码的最小示例: 环形缓冲区用于连续更新音频数据流,因此必须将引入的延迟量保持在最低水平,这就是为什么我要对其进行改进的原因。 我当时认为在WORKING
3回复

读取和写入缓冲区

我有2个类,一个类将多个96位对象写入一个缓冲区(一次32位-3x int32),而我想从同一个缓冲区读取一个类。 第一类(Writer)保留并分配内存区域,并创建一个指向第一个32位区域的指针。 如何安全地写入缓冲区(暂时忽略缓冲区溢出)...我需要以32位块进行写入,因此如何
3回复

声明内存中位图的缓冲区

我正在设计一个仅与存储在内存中的位图一起使用的图形库。 由于位图是二维的(x和y或列和行),因此我可以使用二维数组。 据我了解,C ++在二维数组中的表现不佳。 尤其是涉及动态二维数组时。 因此,我相信二维数组用作缓冲区(或内存中的位图)并不是那么酷。 声明缓冲区的另一种
2回复

缓冲区溢出警告

此脚本将数字的所有数字展开到一个数组中,因此通过执行此操作: spread(number)[position]您可以访问具有相对位置的数字。 现在编译器给了我一个Buffer overrun警告 (C6386),我认为这是由超出数组边界引起的(如果我错了,请纠正我),但我编写了函数脚本,这样这样的事
6回复

void *或char *用于通用缓冲区表示?

我正在设计一个Buffer类,其目的是代表一块内存。 我的底层缓冲区是一个char* (嗯,实际上是boost::shared_array<char> ,但它并不重要)。 我一直在决定为我的构造函数选择什么样的原型: 我应该去: 或者: 或者是其他东