1
MSVS 2010,Windows 7運行時檢查失敗#2,同時使用API保存圖像幀
我正在使用API訪問攝像頭功能。
以下函數顯示一個幀並保存它。
void DisplayThread::OnBufferDisplay(PvBuffer *aBuffer)
{
mDisplayWnd->Display(*aBuffer); //displaying frame
//Now let us try to save the frame with name of the form %Y%m%d%H%M%S.bmp
system("mkdir D:\\ABCD");
struct tm *tm;
int count;
time_t t;
char str_time[20];
t = time(NULL);
tm = localtime(&t);
strftime(str_time, sizeof(str_time), "%Y%m%d%H%M%S.bmp", tm); //name of the frame
char name[1000]; //sufficient space
sprintf(name,"%s",str_time);
char path[]="D:\\ABCD";
strcat(path,name); //path =path+"\\"+name;
// char* str=(char*)(void*)Marshal::StringToHGlobalAnsi(path);
PvString lFilename(path);
PvString lCompleteFileName(lFilename);
PvBufferWriter lBufferWriter; //The following function saves image
PvResult lResult = lBufferWriter.Store(aBuffer, lCompleteFileName, PvBufferFormatBMP);
}
被保存BMP文件的名稱是形式%Y%m%d%H%M%S.bmp
程序的構建完全正常的,甚至顯示正確的到來, 但下面的錯誤信息彈出:
它看起來像內存分配與變量'名稱'是錯誤的。
但我已經分配了足夠的空間,即使那樣我得到這個錯誤。
爲什麼會發生?
請讓我知道是否需要更多的信息來調試。
注意: lBufferWriter.Store()返回的值爲'OK'(表示緩衝區/幀寫入成功),但沒有保存文件。我想這是因爲我得到的運行時檢查失敗。
請幫忙。
'path'是太小,只能容納7個字符(+ 0終結) – Mat 2014-11-05 06:00:38
@Mat你可以請建議那麼,什麼是最好的實踐 ?我應該如何分配一個數組char路徑[1000]? – user3891236 2014-11-05 06:02:24
您的緩衝區必須足夠大以容納您試圖放入其中的數據。如果你在Windows上,MAX_PATH通常足夠大,可以用於文件名。 – 2014-11-05 06:18:43