程式在除錯程序中,呼叫postmessge函式時出現例外:windos已在svs.exe中觸發一個斷點。其原因可能是堆被損壞,這說明svs.exe中或它所加載的任何dll中有BUG。
Csvs曝光Dlg *Form = (Csvs曝光Dlg *)Context;
unsigned char* ImageData;
int imageID;
HDC hdc;
CDC *dc;
if (Form == NULL)
{
return SVGigE_INVALID_PARAMETERS;
}
if( Form->Camera->IsAcquisition==false )
return SVGigE_IMAGE_SKIPPED_IN_CALLBACK;
//獲取影像資料指標
ImageData=https://bbs.csdn.net/topics/Image_getDataPointer(Image); //無符號的字符指標data
Form->Camera->ImageData_8bit = Image_getDataPointer(Image);
GVSP_PIXEL_TYPE PixelType=Image_getPixelType(Image);
imageID = Image_getImageID(Image); //影像ID
Form->PostMessage(WM_DISPLAY_IMAGE, 0, 0);
if (Form->Camera->ImageData=https://bbs.csdn.net/topics/=NULL) //獲取影像指標為空
{
if (Image_getSignalType(Image)==SVGigE_SIGNAL_CAMERA_CONNECTION_LOST)
{
AfxMessageBox(_T("相機丟失連接"));//The camera cable is disconnected while a connection to that camera is open:cable-電纜,disconnected-分離的,
Form->PostMessage(WM_DISPLAY_IMAGE, 0, IMAGE_NONE);
return SVGigE_SUCCESS;
}
}
求大神分析下原因。感激不盡!
uj5u.com熱心網友回復:
直接PostMessage(WM_DISPLAY_IMAGE,0,0)試試?不通過Form呼叫uj5u.com熱心網友回復:
你這是在自己開的執行緒里面,而不是在主執行緒里面嗎?uj5u.com熱心網友回復:
F5運行,中斷看看堆疊那里掛了唄。估計是獲取的影像是不是把緩沖給充爆了。uj5u.com熱心網友回復:
崩潰的時候在彈出的對話框按相應按鈕進入除錯,按Alt+7鍵查看Call Stack即“呼叫堆疊”里面從上到下列出的對應從里層到外層的函式呼叫歷史。雙擊某一行可將游標定位到此次呼叫的源代碼或匯編指令處,看不懂時雙擊下一行,直到能看懂為止。判斷是否越界訪問,可以在陣列的最后一個元素之后對應的地址處設定資料讀寫斷點。如果該地址對應其它變數干擾判斷,可將陣列多宣告一個元素,并設定資料讀寫斷點在該多出元素對應的地址上。
#include <time.h>
#include <stdlib.h>
#include <windows.h>
int main() {
int a,b[11];//本來是b[10],為判斷哪句越界,故意宣告為b[11]
srand((unsigned int)time(NULL));//按兩次F11,等黃色右箭頭指向本行時,除錯、新建斷點、新建資料斷點,地址:&b[10],位元組計數:4,確定。
while (1) {//按F5,會停在下面某句,此時a的值為10,b[10]已經被修改為對應0..4之一。
b[(a=rand()%11)]=0;
Sleep(100);
b[(a=rand()%11)]=1;
Sleep(100);
b[(a=rand()%11)]=2;
Sleep(100);
b[(a=rand()%11)]=3;
Sleep(100);
b[(a=rand()%11)]=4;
Sleep(100);
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/106583.html
標籤:進程/線程/DLL
上一篇:關于MDI視窗標題欄的2個問題
