我有一个指向196字节块的void指针。我需要将连续字节打印为LONGLONG(__ int64)值。我正在使用以下代码块进行打印,但是观察到应用程序崩溃。我究竟做错了什么?有更好的方法吗?
LONGLONG* llx = 0;
void *ptr = evt.MofData;
for (int i = 0; i < evt.MofLength; i += 8)
{
llx = reinterpret_cast<LONGLONG*>(ptr);
sprintf_s(msgbuf, "szof(LL[%d]), val[%ll]\n ", sizeof(LONGLONG), (*llx));
OutputDebugString(msgbuf);
llx = (LONGLONG *)llx + 1;
}
使用memcpy
:
constexpr std::size_t length = 196;
constexpr std::size_t n_blocks = length / sizeof(LONGLONG);
LONGLONG llx[n_blocks];
memcpy(llx, ptr, n_blocks * sizeof(LONGLONG));
现在您可以从LONGLONG
数组中读取llx
。