CentOS 7 システム (64 ビット) で LLRP API を使用して RFID リーダーに接続するための C++ コードを作成しましたが、完全に機能しています。私はまさにその.cppファイルを取り、それをUbuntu 14.04デスクトップ(64ビットも)にコピーし、ファイルを「作成」した後、正常に実行されました。
.cpp ファイルを編集しようとすると、問題が発生します。1 文字/空白/コメントの挿入または削除でも、「セグメンテーション違反 (コア ダンプ)」が発生します。
.cpp ファイルは、編集後に "make" を介して正常に保存およびコンパイルできますが、./ セグメンテーション エラーを使用して実行可能ファイルを実行しているときに発生します。
私は単純な gedit と vim を使用しています。問題は、両方のオペレーティング システムがテキスト文字を処理する方法に関連していると推測しています。手がかりはありますか?
その他の観察 ---
提案に従って、すべてのコードを削除してみましたが、そのままにしておきました -
int main()
{
}
そして、コードは正常に実行されました。では、今何が問題になるのでしょうか?
* 詳細 *
Following is the code snippet that is under suspicion -
/*
* Check to make sure the message is of the right type.
* The type label (pointer) in the message should be
* the type descriptor for READER_EVENT_NOTIFICATION.
*/
if(&CREADER_EVENT_NOTIFICATION::s_typeDescriptor != pMessage->m_pType)
{
goto fail;
}
printf("Hello from check\n");
/*
* Now that we are sure it is a READER_EVENT_NOTIFICATION,
* traverse to the ReaderEventNotificationData parameter.
*/
pNtf = (CREADER_EVENT_NOTIFICATION *) pMessage;
printf("Hello from check 2\n");
printf("Hello from check 3");
pNtfData = pNtf->getReaderEventNotificationData();
if(NULL == pNtfData)
{
goto fail;
}
出力は -
2902Z-001/RFID/example# ./example1 -v 169.254.209.30 124 5 情報: 169.254.209.30 に接続中.... 6 7 情報: 接続済み、ステータスを確認中.... 8 9 チェックからこんにちは チェック 2 からこんにちはセグメンテーション違反 (コアダンプ)
したがって、明らかに「Hello check 2」と「Hello check 3」の間に問題があります。
これはバッファオーバーフローの可能性がありますか?