粗略地说,我有一个包含 const unsigned char 数组的类。此类的对象由一个特殊的工厂函数创建,该函数还负责构造数组(在堆上)。在工厂函数中创建对象时,将为其提供指向数组的指针。数组不会被复制,对象只会使用给定的指针。在销毁时,它将释放数组占用的内存块。
class Foo
{
private:
const unsigned char* array;
size_t size;
public:
Foo(const unsigned char* array, size_t size) : array(array), size(size) {}
~Foo() {delete [] array;}
};
Foo* factoryFunction(const void* data, size_t size)
{
unsigned char* array = new unsigned char[size];
memcpy(array, data, size);
return new Foo(array, size);
}
现在我想知道是否有任何副作用,因为new []
返回unsigned char *
,但delete []
被要求const unsigned char *
。我没有得到任何分段错误。