flagflag  
6: 2011-05-07 (Sat) 20:15:27 s10037 source 7: 2012-02-18 (Sat) 21:30:04 s10037 source
Line 78: Line 78:
ヘッダーファイルはbullet-2.xx → srcに入っている~ ヘッダーファイルはbullet-2.xx → srcに入っている~
-**win32API [#xd9a6814+**アラインメント [#nc3a80e9
-***ウィンドウ生成 [#t07e989f+***構造体に関して [#pfeed50a
-#include<windows.h>~ +たとえば 
-LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);~ +typedef struct Hoge 
-ATOM InitApp(HINSTANCE);~ +
-BOOL InitInstance(HINSTANCE, int);~+    int int1; 
 +   double double1
 +   char char1
 +   double double2
 +}Hoge;
-LPCTSTR lpszClassName = TEXT("win01.cpp");~+があったとして 
 +サイズがいくつになるか 
 +[obara@TandemMirror arainmento]$ ./a.out 
 +24 
 +stHoge  0xbfde0e2c 
 +int1      0xbfde0e2c 
 +double1  0xbfde0e30 
 +char1    0xbfde0e38 
 +double2  0xbfde0e3c
-int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,LPSTR lpsCmdLine, int nCmdShow)~+ってな感じになりchar1とdouble2の間に隙間が出来た 
 +これはコンパイラが勝手に境界調整(アラインメント)して適当に詰め物(パディングというらしい)を入れた 
 +CPUによってパディングのやり方が違うらしい
-{~ +パディングには下手に触ってはいけないらしい
-    MSG msg;~ +
-    BOOL bRet;~+
-    if(!InitApp(hCurInst))~ +**malloc calloc realloc [#mae99393] 
-     return FALSE;~ +***malloc [#o77c9597] 
-    if(!InitInstance(hCurInst, nCmdShow))~ +voidのポインタ返ってくる 
-     return FALSE;~ +いじょ 
-    while ((bRet = GetMessage(&msg, NULL, 0,0)) != 0)~ +***calloc [#g4e06f23] 
-    {~ +voidのポインタが返ってくる 
-     if (bRet == -1)~ +んで中のビットが全部0になっているらしい 
-     {~ +いじょ 
-     break;~ +***realloc [#ycfe0152] 
-     }~ +void realloc(変更したいポインタ,どんくらいヒープするかのサイズ
-     else~ +あんまり頻繁に使わない方がよさげ
-     {~ +
-     TranslateMessage(&msg);~ +
-     DispatchMessage(&msg);~ +
-     }~ +
-    }~ +
-    return (int)msg.wParam;~ +
-}~ +
-//ウィンドウクラス登録~ +
-ATOM InitApp(HINSTANCE hInst)~ +
-{~ +
-    WNDCLASSEX wc;~ +
-    wc.cbSize = sizeof(WNDCLASSEX);~ +
-    wc.style = CS_HREDRAW | CS_VREDRAW;~ +
-    wc.lpfnWndProc = WndProc;~ +
-    wc.cbClsExtra = 0;~ +
-    wc.cbWndExtra = 0;~ +
-    wc.hInstance = hInst;~ +
-    wc.hIcon = (HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), +
-     IMAGE_ICON, 0,0, LR_DEFAULTSIZE | LR_SHARED);~ +
-    wc.hCursor = (HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(IDC_ARROW), +
-    IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED);~ +
-    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);~ +
-    wc.lpszMenuName = NULL;~ +
-    wc.lpszClassName = lpszClassName;~ +
-    wc.hIconSm = (HICON)LoadImage(~ +
-     NULL,MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON, +
-     0, 0, LR_DEFAULTSIZE | LR_SHARED);~+
-    return (RegisterClassEx(&wc));~ +頻繁に巨大な領域をreallocで伸ばすと時間もかかりヒープの中につかえない巨大な空き領域がどんどんできてしまうらしい
-}~ +
-//ウインドウの生成~ +
-BOOL InitInstance(HINSTANCE hInst, int nCmdShow)~ +
-{~ +
-    HWND hWnd;~+
-    hWnd = CreateWindow(lpszClassName,~ +***フラグメンテーション [#c0558cda] 
-     TEXT("クソゲー"),~ +てきとーにメモリの確保、開放を繰り返すとメモリが分断されていき使用できない細かい空きブロックができる 
-     WS_OVERLAPPEDWINDOW,~ +この現象をフラグメンテーションというらしい
-     CW_USEDEFAULT,~ +
-     CW_USEDEFAULT,~ +
-     CW_USEDEFAULT,~ +
-     CW_USEDEFAULT,~ +
-     NULL,~ +
-     NULL,~ +
-     hInst,~ +
-     NULL);~ +
-    if(!hWnd)~ +
-     return FALSE;~ +
-    ShowWindow(hWnd, nCmdShow);~ +
-    UpdateWindow(hWnd);~ +
-    return TRUE;~ +
-}~+
-//ウインドウプロシージャ~ +(メモリはいっぱいあるぜ 気にするこたぁねぇw) 
-LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)~ + 
-{~ +**インクルード!ガーーーードッ!! [#ueddc470] 
-    switch (msg)~ +***再定義防止、無駄なプリコンパイルを減らす [#qad655c3] 
-    {~ +ヘッダーに 
-    case WM_DESTROY:~ +#ifndef OBARA_H 
-     PostQuitMessage(0);~ +#define OBARA_H 
-     break;~ + 
-    default:~ +~~ 
-     return(DefWindowProc(hWnd, msg, wp, lp));+ 
-    }~ +#endif 
-    return 0;~ +と最初と最後に書いて置くだけで再定義防止、とビルド時間を短縮できる 
-}~+ 
 +ifndef とは逆にifdefというのももある 
 +ifndefとは逆で、ifdefは定義されていればendifまでを実行するらしい


Front page   New List of Pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)

Site Search

Login

Username:

Password:


Lost Password?
Register now!!

Sub Menu

mini Calendar

Last MonthMay 2024Next Month
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today

Who's Online

42 user(s) are online (4 user(s) are browsing xpwiki)

Members: 0
Guests: 42

more...

Access Counter

Today : 4084408440844084
Yesterday : 5790579057905790
Total : 2365688023656880236568802365688023656880236568802365688023656880
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com