C-初心者の質問:
行でクラッシュする次のコードがありますunsigned long rdwValue = *((unsigned long*)pParamPtr);
。GCCを使用してfedoraマシンでMIPS32ターゲットのコードをクロスコンパイルしています
unsigned char* pParamPtr = GetNvParamRamAddress(ParameterId, swIndex);
if (0 != pParamPtr)
{
unsigned long rdwValue = *((unsigned long*)pParamPtr);// CRASHES
}
しかし、私が内部の行をに変更するif
と
rdwValue = *(pParamPtr);
これは機能します。
この型キャストでルールに反することをしていますか?
pParamPtr
必要なのは、 rdwValueで始まるアドレスから4バイト[unsignedlongは4バイト]を取得することです。
それmemcpy
は行く方法ですか?