請問呼叫的程式執行完時,borlndmm.dll為何會發生錯誤? |
答題得分者是:aftcast
|
a29375943
一般會員 ![]() ![]() 發表:1 回覆:2 積分:0 註冊:2008-06-04 發送簡訊給我 |
[code cpp] char *buff=new char; strcpy(buff,getcwd(NULL,256)); AnsiString Sbuff=buff; STARTUPINFO si; //等待.exe完成後,再秀Message,保證程式執行完 PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb=sizeof(si); ZeroMemory(&pi, sizeof(pi)); AnsiString para = "vector.exe train " Sbuff "\\user"; //處理外面程式 if(!CreateProcess(NULL,para.c_str() ,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) { ShowMessage("CreateProcess failed!" IntToStr(GetLastError())); } WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); [/code] |
aftcast
站務副站長 ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
你的第一行就錯誤了!
char *buff=new char; /* 上面是新手經常犯的錯誤! 這樣只會配一個byte(字元)大小的空間 等下面copy字串進去時就會出現錯誤,因為不夠放 */ char *buff= new char[256]; //這樣才正確! 配了256個byte字元來供copy進去 剛又看了一下你的程式碼,發現你的用法太轉彎且不夠好。其實你開始的三行用一行就可以,即 AnsiString Sbuff = getcwd(NULL,256); 但這樣不夠好,因為有memory垃坄在裡面,好一點的寫法是 char *cptr; cptr = getcwd(NULL,256); AnsiString Sbuff = cptr; ........ ....... delete [] cptr; //釋放路徑字串的記憶體
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
a29375943
一般會員 ![]() ![]() 發表:1 回覆:2 積分:0 註冊:2008-06-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |