我有一個無符號的C++字符緩衝區複製指針值C++
unsigned char* pBuffer = new unsigned char [1024];
我想通過使用assignement而不是memcpy-即保存在新分配的緩衝區的前幾個字節的pBuffer
指針
*(unsigned char*) &pBuffer[0] = pBuffer;
我無法獲得sytax權利。用正確的語法來讚賞幫助。
Visual Studio 2010中
我有一個無符號的C++字符緩衝區複製指針值C++
unsigned char* pBuffer = new unsigned char [1024];
我想通過使用assignement而不是memcpy-即保存在新分配的緩衝區的前幾個字節的pBuffer
指針
*(unsigned char*) &pBuffer[0] = pBuffer;
我無法獲得sytax權利。用正確的語法來讚賞幫助。
Visual Studio 2010中
我不知道你爲什麼會想這樣做,但我不能想到幾個古怪的原因,所以:
reinterpret_cast<unsigned char**>(pBuffer)[0] = pBuffer;
您希望編譯器重新詮釋指針作爲unsigned char**
,並存儲值10在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
工作,謝謝。我正在嘗試使用多個pBuffers製作一個自定義的「鏈接列表」。 – user85917 2012-03-13 17:11:26
@ user85917:這是_not_使用'reinterpret_cast'的情況之一。我添加了更多信息給我的答案。 – 2012-03-13 17:17:37
不知道你爲什麼這樣做,但這個工程我g++
編譯:
*(unsigned char**)pBuffer=pBuffer;
如何:
*((unsigned char**) pBuffer) = pBuffer;
它施放pBuffer
指針的指針的指針爲char,然後取消引用,要使它成爲一個指針,然後分配一個char pBuffer
指針。
,如果我們把它寫這樣可能更容易理解:
unsigned char **ppBuffer = &pBuffer;
*ppBuffer = pbuffer;
使用std ::向量<性病::矢量<無符號字符>>。 – AlexTheo 2012-03-13 17:02:53
您正在使用哪種編譯器? – iammilind 2012-03-13 17:03:44