好文章整理

來源:互聯網
上載者:User

1.

關於#pragma warning

http://dev.csdn.net/article/66/66106.shtm

2.

installshield 使用:

http://www.cnblogs.com/Cindy_weiwei/archive/2009/05/19/1460230.html

3.

NTDLL.DLL): 0xC0000005: Access Violation問題:

 

 

A-------在內部進行調試的時候發現,是調用了new操作符的緣故。 

很不理解,在dll中調用new操作符會出現這麼一個問題,網路上搜尋,在微軟msdn論壇(具體地址:http://forums.msdn.microsoft.com/zh-CN/vclanguage/thread/951a04be-6b52-4617-b396-9c35e3755759/)上搜尋到相關問題。 

 

於是按照說明,將dll的產生方式修改為"共用mfc方式" 

         project properties -> general -> Project Defaults->Use of MFC

         To set the properties "Use MFC In A Shared DLL " 

另外,在網上也發現另外一篇,console方面的, 解決辦法:使用c   runtime   

library的動態連結版本(在你的console工程中設定忽略所有的預設連結庫,然後連結到msvcrt.lib就可以了)(具體地址:http://www.poptool.net/software/p606/A60674501.shtml) 

B------ 一般出現此問題都是因為指標未初始化等出現的訪問違規。但我出現這個錯誤的描述如下:

      描述:vc程式在視窗中添加edit空間(或其他控制項)及對應變數後(都是通過類嚮導添加的,沒有認為因素),編譯及串連都能正常通過,但運行時會出現0xC0000005:Access 

        Violation錯誤。經跟蹤調試發現,當程式運行到C******App::InitInstance() 中的m_pMainWnd = 

      &dlg;語句時,發生錯誤。

      解決:重新Rebuilt All(全部重建)來重新編譯即可。

4. 

崩潰地址 程式調試 

http://blog.csdn.net/guo_wei/archive/2007/09/29/1805978.aspx

5.

記憶體池

http://www.codeproject.com/KB/cpp/MemoryPool.aspx

 

6. 重疊IO操作:

http://hi.baidu.com/soulshape/blog/item/5ba8eec80034d91e7e3e6f7a.html

// overlapped.cpp : 定義控制台應用程式的進入點。<br />//<br />#include "stdafx.h"<br />#pragma comment(lib,"ws2_32.lib")<br />#include <winsock2.h><br />#include <stdio.h><br />#define DATA_BUFSIZE 1024 // 接收緩衝區大小<br />SOCKET ListenSocket,<br />AcceptSocket[DATA_BUFSIZE] = {0};<br />WSABUF DataBuf[DATA_BUFSIZE];<br />WSAOVERLAPPED Overlapped[DATA_BUFSIZE]; // 重疊結構<br />WSAEVENT EventArray[WSA_MAXIMUM_WAIT_EVENTS]; // 用來通知重疊操作完成的事件控制代碼數組<br />DWORD dwRecvBytes = 0, // 接收到的字元長度<br />Flags = 0; // WSARecv的參數<br />DWORD volatile dwEventTotal = 0; // 程式中事件的總數<br />//由於EVENT數量限制,目前最多隻能支援64個串連<br />DWORD WINAPI AcceptThread(LPVOID lpParameter)<br />{<br />WSADATA wsaData;<br />WSAStartup(MAKEWORD(2,2),&wsaData);<br />ListenSocket = WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,NULL,WSA_FLAG_OVERLAPPED);<br />SOCKADDR_IN ServerAddr;<br />ServerAddr.sin_family = AF_INET;<br />ServerAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);<br />ServerAddr.sin_port = htons(1234);<br />bind(ListenSocket,(LPSOCKADDR)&ServerAddr,sizeof(ServerAddr));<br />listen(ListenSocket,100);<br />printf("listenning.../n");<br />int i = 0;<br />SOCKADDR_IN ClientAddr;<br />int addr_length=sizeof(ClientAddr);<br />while (TRUE)<br />{<br />while((AcceptSocket[i] == 0) && (AcceptSocket[i] = accept(ListenSocket,(SOCKADDR*)&ClientAddr, &addr_length)) != INVALID_SOCKET)<br />{<br />printf("accept %d ip:%s port:%d/n",i+1,inet_ntoa(ClientAddr.sin_addr),ClientAddr.sin_port);<br />EventArray[i] = WSACreateEvent();<br />dwEventTotal++;<br />memset(&Overlapped[i],0,sizeof(WSAOVERLAPPED));<br />Overlapped[i].hEvent = EventArray[i];<br />char * buffer = new char[DATA_BUFSIZE];<br />memset(buffer,0,DATA_BUFSIZE);<br />DataBuf[i].buf = buffer;<br />DataBuf[i].len = DATA_BUFSIZE;<br />if(WSARecv(AcceptSocket[i], &DataBuf[i], dwEventTotal, &dwRecvBytes, &Flags, &Overlapped[i], NULL) == SOCKET_ERROR)<br />{<br />int err = WSAGetLastError();<br />if(WSAGetLastError() != WSA_IO_PENDING)<br />{<br />printf("disconnect: %d/n",i+1);<br />closesocket(AcceptSocket[i]);<br />AcceptSocket[i] = 0;<br />//WSACloseEvent(EventArray[i]); // 關閉事件<br />DataBuf[i].buf = NULL;<br />DataBuf[i].len = NULL;<br />continue;<br />}<br />}<br />i = (i+1)%WSA_MAXIMUM_WAIT_EVENTS;<br />}<br />}<br />return FALSE;<br />}<br />DWORD WINAPI ReceiveThread(LPVOID lpParameter)<br />{<br />DWORD dwIndex = 0;<br />while (true)<br />{<br />dwIndex = WSAWaitForMultipleEvents(dwEventTotal, EventArray, FALSE, 1000, FALSE);<br />if (dwIndex == WSA_WAIT_FAILED || dwIndex == WSA_WAIT_TIMEOUT)<br />continue;<br />dwIndex = dwIndex - WSA_WAIT_EVENT_0;<br />WSAResetEvent(EventArray[dwIndex]);<br />DWORD dwBytesTransferred;<br />WSAGetOverlappedResult( AcceptSocket[dwIndex], &Overlapped[dwIndex], &dwBytesTransferred, FALSE, &Flags);<br />//first check whethre peer has closed the connection, and if so, close the socket.<br />if(dwBytesTransferred == 0)<br />{<br />printf("disconnect: %d/n",dwIndex+1);<br />closesocket(AcceptSocket[dwIndex]);<br />AcceptSocket[dwIndex] = 0;<br />WSACloseEvent(EventArray[dwIndex - WSA_WAIT_EVENT_0]); // 關閉事件<br />DataBuf[dwIndex].buf = NULL;<br />DataBuf[dwIndex].len = NULL;<br />continue;<br />}<br />//使用資料<br />printf("%s/n",DataBuf[dwIndex].buf);<br />memset(DataBuf[dwIndex].buf,0,DATA_BUFSIZE);<br />if(WSARecv(AcceptSocket[dwIndex], &DataBuf[dwIndex], dwEventTotal, &dwRecvBytes, &Flags, &Overlapped[dwIndex], NULL) == SOCKET_ERROR)<br />{<br />if(WSAGetLastError() != WSA_IO_PENDING)<br />{<br />printf("disconnect: %d/n",dwIndex+1);<br />closesocket(AcceptSocket[dwIndex]);<br />AcceptSocket[dwIndex] = 0;<br />//WSACloseEvent(EventArray[dwIndex]); // 關閉事件<br />DataBuf[dwIndex].buf = NULL;<br />DataBuf[dwIndex].len = NULL;<br />continue;<br />}<br />}<br />}<br />return FALSE;<br />}<br />void main()<br />{<br />HANDLE hThreads[2];<br />hThreads[0] = CreateThread(NULL, 0, AcceptThread, NULL, NULL, NULL);<br />hThreads[1] = CreateThread(NULL, 0, ReceiveThread, NULL, NULL, NULL);<br />WaitForMultipleObjects(2,hThreads,TRUE,INFINITE);<br />printf("exit/n");<br />CloseHandle(hThreads[0]);<br />CloseHandle(hThreads[1]);<br />}<br /> 

7. 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.