C++;无符号字符数组数组 我试图理解如何在C++中创建和处理一个无符号字符数组。例如: Array[0] = { new array of unsigned chars } Array[1] = { new array of unsigned chars } Array[2] = { new array of unsigned chars } ....and so on

C++;无符号字符数组数组 我试图理解如何在C++中创建和处理一个无符号字符数组。例如: Array[0] = { new array of unsigned chars } Array[1] = { new array of unsigned chars } Array[2] = { new array of unsigned chars } ....and so on,c++,arrays,C++,Arrays,我已经写了下一段代码,但我觉得我做错了什么。代码工作正常,但我不知道我声明“缓冲区”和删除缓存的方式是否正确,或者它是否会产生内存泄漏 #define MAX_BUFFER 10 unsigned char* cache[MAX_BUFFER]; bool cache_full = false; void AddToCache(unsigned char *buffer, const size_t buffer_size) { if (cache_full == true)

我已经写了下一段代码,但我觉得我做错了什么。代码工作正常,但我不知道我声明“缓冲区”和删除缓存的方式是否正确,或者它是否会产生内存泄漏

#define MAX_BUFFER 10

unsigned char* cache[MAX_BUFFER];
bool cache_full = false;

void AddToCache(unsigned char *buffer, const size_t buffer_size)
{
    if (cache_full == true)
    {
        return;
    }

    for (int index = 0; index < MAX_BUFFER; index++)
    {
        if (cache[index] == NULL)
        {
            cache[index] = new unsigned char[buffer_size];
            memcpy(cache[index], buffer, buffer_size);
        }

        if (index < MAX_BUFFER - 1)
        {
            cache_full = true;
        }
    }
}

void ClearCache()
{
    for (int index = 0; index < MAX_BUFFER; index++)
    {
        if (cache[index] != NULL)
        {
            delete[] cache[index];
            cache[index] = NULL;
        }
    }

    cache_full = false;
}

bool IsCacheFull()
{
    return cache_full;
}
#定义最大缓冲区10
无符号字符*缓存[最大缓冲区];
bool cache_full=false;
void AddToCache(无符号字符*缓冲区,常量大小\u t缓冲区大小)
{
如果(缓存已满==true)
{
返回;
}
对于(int index=0;index
这样行吗

memcpy(cache, buffer, buffer_size);
不应该。这将用
缓冲区的内容覆盖
缓存中的所有指针。在上下文中,这可能是:

memcpy(cache[index], buffer, buffer_size);
此外,每次添加到缓存时,您都会重复地将
cache\u full
设置为
true
。尝试:

AddToCache(unsigned char *buffer, const size_t buffer_size)  
{
  for (int index = 0; index < MAX_BUFFER; index++)
  {
    if (cache[index] == NULL)
    {
        cache[index] = new unsigned char[buffer_size];
        memcpy(cache[index], buffer, buffer_size);
        return(index);  // in case you want to find it again
    }
  }

  // if we get here, we didn't find an empty space
  cache_full = true;
  return -1;
}
AddToCache(无符号字符*缓冲区,常量大小\u t缓冲区大小)
{
对于(int index=0;index< MycPy语句总是初始化同一个位置,但我怀疑您想初始化Cache(index)。您已经标记了问题C++,但是使用C数组;你为什么不能使用STL来“缓解”你的痛苦?谢谢,我已经用你所有的笔记更新了代码。但是我仍然不确定我声明缓存变量的方式是否正确。因为这是一个数组,很好。它是一个指向无符号字符的指针数组,这是您分配并添加到数组中的内容。