memset、memcpy、strcpy、HeapAlloc
生活随笔
收集整理的這篇文章主要介紹了
memset、memcpy、strcpy、HeapAlloc
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
win7, vc6;新建一個單文檔工程;代碼;
void CMemView::OnDraw(CDC* pDC) {CMemDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data herechar buffer[4];memset(buffer,0,sizeof(char)*4);pDC->TextOut(10,20, buffer);strcpy(buffer,"123");pDC->TextOut(10,50, buffer);char buffer1[20];memset(buffer1,0,sizeof(char)*20);memcpy(buffer1,"12345",5);pDC->TextOut(10,80, buffer1);memset(buffer1,0,sizeof(char)*20);memcpy(buffer1,"12345",3);pDC->TextOut(10,110, buffer1);HANDLE hHeap = HeapCreate(HEAP_NO_SERIALIZE, 1024 * 1024, 0);char *pszText = (char*)HeapAlloc(hHeap,HEAP_ZERO_MEMORY, 2 * 1024 * 1024);strcpy(pszText, "hello heap!");//printf("%s\n", pszText);pDC->TextOut(10, 140, pszText);HeapFree(hHeap, 0, pszText);HeapDestroy(hHeap);}先定義4字節的buffer,memset設置各字節為零,輸出buffer,此時在 10、20 輸出的內容為空;
然后拷貝"123"到buffer,在 10、50 輸出buffer;
定義20個字節的buffer1,初始化為零,memcpy拷貝內容過來,然后輸出;
memcpy:第一個參數是目的,第二個參數是源,第三個參數是拷貝的長度;第一個memcpy拷貝了"12345"過去,第二個memcpy只拷貝過來"123";
然后分配堆內存,分配時設置了HEAP_ZERO_MEMORY參數,就已經初始化為全零;然后拷貝一個字符串到分配的堆內存,輸出其內容;
運行如下;
memset的第二個參數是整型;寫成 memset(buffer1,"0",sizeof(char)*20) 則會報錯;
?
總結
以上是生活随笔為你收集整理的memset、memcpy、strcpy、HeapAlloc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server Guid和NEWS
- 下一篇: VC++更改鼠标指针为系统预定义形状和自