我有一个未签名的C ++字符缓冲区

unsigned char* pBuffer =  new unsigned char [1024];


我想通过使用分配而不是memcpy-将pBuffer指针保存在新分配的缓冲区的前几个字节中

*(unsigned char*) &pBuffer[0] = pBuffer;


我无法正确获取语法。正确执行此操作的语法有所帮助。

Visual Studio 2010

最佳答案

我不知道您为什么要这样做,但是我可以想到一些奇怪的原因,因此:

reinterpret_cast<unsigned char**>(pBuffer)[0] = pBuffer;


您希望编译器将指针重新解释为unsigned char**,并将pBuffer的值存储在0索引插槽中。

您说要索引具有多个pBuffer的“链接列表”。在这种情况下,您不应使用reinterpret_cast。代替:

struct node {
     node* prev;
     std::unique_ptr<node> next;
     unsigned char buffer[1024];
     node(node* prev_) : prev(prev_) {}
};

std::unique_ptr<node> list(new node(nullptr)); //tada

关于c++ - 复制指针值C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9688557/

10-12 01:42