为无符号字符* 分配一个数字

Assigning a unsigned char* a number

本文关键字:一个 数字 无符号 字符 分配      更新时间:2023-10-16

>我正在使用一个无符号字符*来存储最多200左右的信息, 我正在使用字符指针,因为以后想删除,例如

unsigned char* hello = new unsigned char;
delete hello;

但是当我尝试为它分配一个值时,例如hello = 54它给出了错误a value of type "int" cannot be assigned to an entity of type "unsigned char*"

帮自己一个忙,如果是整数,就用int。否则,一旦遇到期望char对象实际上是字符(例如,格式化流 IO(的函数重载,它就会变得混乱:

int hello = 52;

如果确实需要节省一些内存,可以直接使用unsigned char

unsigned char hello = 52;

无论出于何种原因,如果希望将对象的生存期限制在较小的范围内,则可以引入另一个级别的嵌套:

{
unsigned char hello = 52;
} // no need to delete here, because the object is destroyed automatically

请注意,当您声明一个指针(现在可能是 64 位宽(并动态分配内存以在其他地方保存字节时,您实际上会使用更多内存。

如果确实希望将对象的生存期延长到当前范围之外,则可以改用智能指针,以防止内存泄漏或双重释放等问题。

std::unique_ptr<char> hello = std::make_unique<char>(52);

但请注意,这通常很麻烦,而且通常根本不需要,尤其是对于这么小的物体。只需声明一个局部变量,根据需要复制它,然后完成它。


除此之外,您需要取消引用指针以访问指针指向的对象:

unsigned char * p = new unsigned char;
*p = 52;
delete p;