【发布时间】:2019-12-05 05:50:51
【问题描述】:
我有一个指向 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;
}
【问题讨论】:
-
1)
196 % 64 != 0, 2) 在for循环的第一行中覆盖llx,所以最后一行llx = ... + 1;什么都不做。