我試圖使用功能的strstr像這樣:測試返回的strstr有效的指針
const char * pInicio = strstr(origem, chave);
if (pInicio != NULL) ...
出乎預期的,當我做「如果」測試編譯器會拋出一個訪問位置衝突異常。每次嘗試獲取某個字符串中不存在的關鍵字時都會發生。
調用堆棧是:
ntdll.dll!779315de()
[Os quadros abaixo podem estar incorretos e/ou ausentes, nenhum símbolo foi carregado para ntdll.dll]
ntdll.dll!779315de()
ntdll.dll!7792014e()
> msvcr100d.dll!_output_l(_iobuf * stream, const char * format, localeinfo_struct * plocinfo, char * argptr) Linha 2361 + 0xa bytes C++
cccccccc()
產量爲:
Exceção de primeira chance em 0x0f8620a7 (msvcr100d.dll) no TestesApp.exe: 0xC0000005: Violação de acesso ao ler o local 0x00000001.
Exceção sem-tratamento em 0x779315de no TestesApp.exe: 0xC0000005: Violação de acesso ao ler o local 0x00000001.
右鍵異常之前,變量值分別爲:
- 蔡夫:0x00196f64 「$ GNGSA」鍵入:char *
- Origem:0x00196840「$ GPRMC,000651.082,V ,,,,,,, 19 1210 ,,, N * 4F $ GPGGA,000652.091 ,,,,, 0,00 ,,, M,0.0,M ,, 0000 * 5F $ GPGSA,A,1 ,,,,,,,,,,,, ,,, * 1E」類型:常量字符*
- pInicio:00000000無效>類型:常量字符*
鏈接器命令行是:
/OUT:"C:\Users\Leandro\documents\visual studio 2010\Projects\TestesApp\Debug\TestesApp.exe" /INCREMENTAL /NOLOGO "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Debug\TestesApp.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\Leandro\documents\visual studio 2010\Projects\TestesApp\Debug\TestesApp.pdb" /SUBSYSTEM:CONSOLE /PGD:"C:\Users\Leandro\documents\visual studio 2010\Projects\TestesApp\Debug\TestesApp.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
也是C/C++命令行是
/ZI /nologo /W3 /WX- /Od /Oy- /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Debug\TestesApp.pch" /Fa"Debug\" /Fo"Debug\" /Fd"Debug\vc100.pdb" /Gd /analyze- /errorReport:queue
在此之後,我嘗試測試指針,如果它爲空。 那是我現在的問題,該如何解決?
此致敬禮!
看起來不像它在這個代碼中。你確定'strstr'的參數是有效的嗎? – 2013-03-26 18:08:22
你確定錯誤發生在'if'行嗎? – Barmar 2013-03-26 18:09:53
如果您從strstr()獲得訪問衝突,您傳入的地址無效,或者它們引用的字符串未終止。我建議你在*結論上面的代碼有問題之前驗證兩個條件*。 – WhozCraig 2013-03-26 18:20:12