[問題] 發生 EXCEPTION_DATATYPE_MISALIGNMENT
大家好
今天郁到一個奇怪的exception 在非pc 平台的windows環境 wince
但我不知道我哪裡寫錯了@@
我的程式碼大概寫這樣~
char *RealBuffer = new char[sizeof(int) + sizeof(long long) + sizeof(bool)+
sizeof(double)];
int *pIntPtr = NULL;
long long *pLongLongPtr = NULL;
bool *pBoolPtr = NULL;
double *pDoublePtr = NULL;
pIntPtr = reinterpret_cast<int*>(RealBuffer);
*pIntPtr = 123;
pIntPtr++;
pBoolPtr = reinterpret_cast<bool*>(pIntPtr);
*pBoolPtr = true;
pBoolPtr++;
pLongLongPtr = reinterpret_cast<long long*>(pBoolPtr);
*pLongLongPtr = 567LL;
pLongLongPtr++;
//我發現問題點出下面這幾行~ 上面都沒事!!!!!!!!
pDoublePtr = reinterpret_cast<long long*>(pLongLongPtr);
*pDoublePtr = 123.456; //我這邊出現exception
pDoublePtr++;
//利用win32 API把RealBuffer 整塊寫到file
===================================================
這段code 我自己用pc版的vc跑沒啥問題 和 我自己觀念上也覺得並沒有錯
但是跑在那個平台就會出exception
所以我必須去解, 但我根本不知道發生什麼事了....
於是我就去google找了一下
http://xiaojun123hello.blog.163.com/blog/static/361666562011113102724235/
我看到第一段他的範例跟我的case有點類似
令我不解的是
if (*pi == 4561321) 這邊
和int i;
memcpy(&i, pi, 4);
if (i == 4561321) endparse data;
我自己看不出來差異點在哪.....他dereference 取得後sizeof(int) bytes 去解釋成int
跟他用memcpy 複製一份 差異在哪 反而感覺多複製了一次....
而且google過程中 常常會寫說這exception 很常見@@ 我從來沒遇過好像經歷很少...
煩請各位有經驗的版友給予指點
該怎麼寫才是正確的方式 可攜的方法
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.147.15.66
※ 編輯: QQ29 來自: 122.147.15.66 (02/13 15:38)
※ 編輯: QQ29 來自: 122.147.15.66 (02/13 15:40)
推
02/13 16:16, , 1F
02/13 16:16, 1F
→
02/13 16:17, , 2F
02/13 16:17, 2F
→
02/13 16:17, , 3F
02/13 16:17, 3F
→
02/13 16:23, , 4F
02/13 16:23, 4F
→
02/13 16:24, , 5F
02/13 16:24, 5F
→
02/13 16:24, , 6F
02/13 16:24, 6F
→
02/13 16:36, , 7F
02/13 16:36, 7F
→
02/13 16:37, , 8F
02/13 16:37, 8F
→
02/13 16:48, , 9F
02/13 16:48, 9F
→
02/13 17:05, , 10F
02/13 17:05, 10F
→
02/13 17:06, , 11F
02/13 17:06, 11F
推
02/13 18:57, , 12F
02/13 18:57, 12F
→
02/13 18:57, , 13F
02/13 18:57, 13F
→
02/13 18:59, , 14F
02/13 18:59, 14F
→
02/13 19:01, , 15F
02/13 19:01, 15F
→
02/13 19:50, , 16F
02/13 19:50, 16F
→
02/13 19:51, , 17F
02/13 19:51, 17F
→
02/13 19:52, , 18F
02/13 19:52, 18F
推
02/13 20:23, , 19F
02/13 20:23, 19F
→
02/13 20:24, , 20F
02/13 20:24, 20F
→
02/13 20:25, , 21F
02/13 20:25, 21F
→
02/13 23:28, , 22F
02/13 23:28, 22F
→
02/13 23:29, , 23F
02/13 23:29, 23F
→
02/13 23:29, , 24F
02/13 23:29, 24F
→
02/13 23:30, , 25F
02/13 23:30, 25F
→
02/13 23:31, , 26F
02/13 23:31, 26F
→
02/13 23:32, , 27F
02/13 23:32, 27F
→
02/14 01:34, , 28F
02/14 01:34, 28F
→
02/14 01:36, , 29F
02/14 01:36, 29F
→
02/14 09:33, , 30F
02/14 09:33, 30F
→
02/14 09:34, , 31F
02/14 09:34, 31F
→
02/14 10:39, , 32F
02/14 10:39, 32F
→
02/14 10:40, , 33F
02/14 10:40, 33F
→
02/14 10:41, , 34F
02/14 10:41, 34F
→
02/14 10:42, , 35F
02/14 10:42, 35F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章