如何安全地将静态字符数组传递给另一个类

how to pass a static char array to another class safely

本文关键字:数组 字符 另一个 静态 何安全 安全      更新时间:2023-10-16

我想知道是否有人可以帮助我了解如何安全地将静态无符号字符数组从一个类传递到另一个类。如果这是微不足道的,我很抱歉,但我想确保我做对了。

例如

// First Class
unsigned char data[1024];
TMainClass::TMainClass()
{
    data[34] = 1;
    data[45] = 65;
    ...
    TOtherClass obj(data);
};

// Second class
static unsigned char obtainedData[1024];
TOtherClass::TOtherClass(unsigned char* _data)
{
    obtainedData = _data;
};

您确实应该使用stl或boost容器。但是,如果您有很好的理由不这样做,那么……

你通过的很好,但是赋值是错误的。

obtainedData = _data;

你真的应该复制数据

memcpy(obtainedData, _data, 1024);
std::copy(_data, _data+1024, obtainedData) // Thanks @Grizzly

或者重新定义obtainedData变量

static unsigned char* obtainedData;

指出:

一定要考虑要传递和复制到的数组的大小。它们能保证尺寸一样吗?

你说的"安全"或"安全"是什么意思?

你的类型是错误的(你没有像那样把一个数组赋值给另一个数组)。

这是c++所以你应该使用std::string或者std::vector或者如果你需要一个固定的缓冲区std::array