青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

把握命運,追逐夢想

對自己所做的事要有興趣,同時還要能夠堅持不懈

統計

留言簿(1)

閱讀排行榜

評論排行榜

#

同步訪問中的讀寫者問題(使用線程關鍵域)

#include <windows.h>
#include 
<stdlib.h>
#include 
<time.h>
#include 
<stdio.h>
struct CRITICAL_REGION
{
public:
    CRITICAL_SECTION cs;
    
int gData;
}
;
DWORD WINAPI writer(LPVOID cr);
DWORD WINAPI reader(LPVOID cr);


int main(int argc,char* argv[])
{
    DWORD targetThreadID;
    HANDLE writerThread;
    HANDLE readerThread;
    CRITICAL_REGION cr;
    cr.gData
=0;
    InitializeCriticalSection(
&(cr.cs));
    writerThread 
=CreateThread(NULL,0,writer,&cr,0,&targetThreadID);
    CloseHandle(writerThread);
    readerThread 
=CreateThread(NULL,0,reader,&cr,0,&targetThreadID);    
    CloseHandle(readerThread);
    Sleep(
10000);
    printf(
"end");
    
return 0;
}


DWORD WINAPI writer(LPVOID cr)
{
    Sleep(
1000);
    DWORD result 
= 0;
    
int n = 1;
    ExitProcess(
0);

    
while(n<=10)
    
{
        EnterCriticalSection(
&((CRITICAL_REGION*)cr)->cs);
        
if(((CRITICAL_REGION*)cr)->gData==0)
        
{
            ((CRITICAL_REGION
*)cr)->gData = n;
            printf(
"gData is %d\n",((CRITICAL_REGION*)cr)->gData);
            n
++;
        }

        LeaveCriticalSection(
&(((CRITICAL_REGION*)cr)->cs));
        Sleep(
100);

    }

    
return result;
}
;

DWORD WINAPI reader(LPVOID cr)
{
    DWORD result 
=0;
    
char u[6];
    
int n = 1;
    
while(n<=10)
    
{
        EnterCriticalSection(
&((CRITICAL_REGION*)cr)->cs);
        
if(((CRITICAL_REGION*)cr)->gData!=0)
        
{
            ((CRITICAL_REGION
*)cr)->gData = 0;
            n
++;
            printf(
"gData is taken away\n");
        }

        LeaveCriticalSection(
&(((CRITICAL_REGION*)cr)->cs));
        Sleep(
50);

    }

    DeleteCriticalSection( 
&(((CRITICAL_REGION*)cr)->cs)); 
    gets(u);
    
return result;
}
;

posted @ 2009-08-12 18:24 把握命運 閱讀(241) | 評論 (0)編輯 收藏

C++作業一------------模擬電腦的組裝

     摘要: // stdafx.h : 標準系統包含文件的包含文件,// 或是經常使用但不常更改的// 特定于項目的包含文件//#pragma once#define WIN32_LEAN_AND_MEAN        // 從 Windo...  閱讀全文

posted @ 2009-08-12 18:10 把握命運 閱讀(330) | 評論 (0)編輯 收藏

C++作業二----實現一個棧的基本功能

     摘要: #include "Stack.h"CStack::CStack(void){    this->m_pTopMost = new char[100];    this->m_pBottom = &(this->m_pTopMost[...  閱讀全文

posted @ 2009-08-12 17:48 把握命運 閱讀(276) | 評論 (0)編輯 收藏

數、字符、字符串的各種轉換方法

//第一種方法,使用sprintf系列函數
swprintf(buf,L"the char is %d",integer);
sprintf(buf,
"the char is %d",integer);
//第二種方法
CString str;
str.Format(
"5+3=%d",99);
MessageBox(str);

(先寫幾種,以后慢慢積累補充)

posted @ 2009-08-11 23:32 把握命運 閱讀(95) | 評論 (0)編輯 收藏

vc上的內存泄露調試的例子

/*****************************************************************
 *             ?000 Microsoft Corporation                  *
 *  CRT_DBG1                                                     *
 *  This simple program illustrates the basic debugging features *
 *  of the C runtime libraries, and the kind of debug output     *
 *  that these features generate.                                *
 ****************************************************************
*/


#include 
<stdio.h>
#include 
<string.h>
#include 
<malloc.h>
#include 
<crtdbg.h>
    
// Disable deprecation warnings.  The unsecure version of strcpy is
// used intentionally to show off debugging features.
#pragma warning (disable : 4996)

// This routine place comments at the head of a section of debug output
void OutputHeading( const char * explanation )
{
   _RPT1( _CRT_WARN, 
"\n\n%s:\n**************************************\
************************************\n", explanation );
}


// The following macros set and clear, respectively, given bits
// of the C runtime library debug flag, as specified by a bitmask.
#ifdef   _DEBUG
#define  SET_CRT_DEBUG_FIELD(a) \
            _CrtSetDbgFlag((a) 
| _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG))
#define  CLEAR_CRT_DEBUG_FIELD(a) \
            _CrtSetDbgFlag(
~(a) & _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG))
#else
#define  SET_CRT_DEBUG_FIELD(a)   ((void) 0)
#define  CLEAR_CRT_DEBUG_FIELD(a) ((void) 0)
#endif


int main( )
{
   
char *p1, *p2;
   _CrtMemState s1, s2, s3;

#ifndef _DEBUG
printf(
"Skipping this for non-debug mode.\n");
return 2;
#endif

   
// Send all reports to STDOUT
   _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
   _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT );
   _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE );
   _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT );
   _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );
   _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT );

   
// Allocate 2 memory blocks and store a string in each
   p1 = malloc( 34 );
   strcpy( p1, 
"This is the p1 string (34 bytes)." );

   p2 
= malloc( 34 );
   strcpy( p2, 
"This is the p2 string (34 bytes)." );


   OutputHeading( 
      
"Use _ASSERTE to check that the two strings are identical" );
   _ASSERTE( strcmp( p1, p2 ) 
== 0 );

   OutputHeading( 
      
"Use a _RPT macro to report the string contents as a warning" );
   _RPT2( _CRT_WARN, 
"p1 points to '%s' and \np2 points to '%s'\n", p1, p2 );

   OutputHeading( 
      
"Use _CRTMemDumpAllObjectsSince to check the p1 and p2 allocations" );
   _CrtMemDumpAllObjectsSince( NULL );

   free( p2 );

   OutputHeading( 
      
"Having freed p2, dump allocation information about p1 only" );
   _CrtMemDumpAllObjectsSince( NULL );

   
// Store a memory checkpoint in the s1 memory-state structure
   _CrtMemCheckpoint( &s1 );

   
// Allocate another block, pointed to by p2
   p2 = malloc( 38 );
   strcpy( p2, 
"This new p2 string occupies 38 bytes.");

   
// Store a 2nd memory checkpoint in s2
   _CrtMemCheckpoint( &s2 );

   OutputHeading( 
      
"Dump the changes that occurred between two memory checkpoints" );
   
if ( _CrtMemDifference( &s3, &s1, &s2 ) )
      _CrtMemDumpStatistics( 
&s3 );

   
// Free p2 again and store a new memory checkpoint in s2
   free( p2 );
   _CrtMemCheckpoint( 
&s2 );

   OutputHeading( 
      
"Now the memory state at the two checkpoints is the same" );
   
if ( _CrtMemDifference( &s3, &s1, &s2 ) )
      _CrtMemDumpStatistics( 
&s3 );

   strcpy( p1, 
"This new p1 string is over 34 bytes" );
   OutputHeading( 
"Free p1 after overwriting the end of the allocation" );
   free( p1 );

   
// Set the debug-heap flag so that freed blocks are kept on the
   
// linked list, to catch any inadvertent use of freed memory
   SET_CRT_DEBUG_FIELD( _CRTDBG_DELAY_FREE_MEM_DF );

   p1 
= malloc( 10 );
   free( p1 );
   strcpy( p1, 
"Oops" );

   OutputHeading( 
"Perform a memory check after corrupting freed memory" );
   _CrtCheckMemory( );

   
// Use explicit calls to _malloc_dbg to save file name and line number
   
// information, and also to allocate Client type blocks for tracking
   p1 = _malloc_dbg( 40, _NORMAL_BLOCK, __FILE__, __LINE__ );
   p2 
= _malloc_dbg( 40, _CLIENT_BLOCK, __FILE__, __LINE__ );
   strcpy( p1, 
"p1 points to a Normal allocation block" );
   strcpy( p2, 
"p2 points to a Client allocation block" );

   
// You must use _free_dbg to free a Client block
   OutputHeading( 
      
"Using free( ) to free a Client block causes an assertion failure" );
   free( p1 );
   free( p2 );

   p1 
= malloc( 10 );
   OutputHeading( 
"Examine outstanding allocations (dump memory leaks)" );
   _CrtDumpMemoryLeaks( );

   
// Set the debug-heap flag so that memory leaks are reported when
   
// the process terminates. Then, exit.
   OutputHeading( "Program exits without freeing a memory block" );
   SET_CRT_DEBUG_FIELD( _CRTDBG_LEAK_CHECK_DF );
}
大概解釋一下,這里的函數都是什么作用:
1、首先是剛開始的六個函數,這六個函數的作用就是讓接下來的內存調試函數輸出調試信息到控制臺。后面的函數都是實際調試內存的,如果之前調用了這六個函數,那么調試信息會輸出到控制臺。
2、_CrtMemDumpAllObjectsSince( NULL )函數的作用是輸出目前為止,在堆中申請的空間的所有信息,包括地址,大小,內容。
3、_CrtDumpMemoryLeaks( )函數的作用是檢測到目前為止,還有哪些堆中申請的內存沒有釋放,包括地址,大小等
4、SET_CRT_DEBUG_FIELD( _CRTDBG_LEAK_CHECK_DF )宏的作用是在程序結束的時候檢測堆內存是否還有泄露,作用同CrtDumpMemoryLeaks( )一樣,只不過是在所有該釋放的都結束之后,進行最后的檢查。
(未完,以后補充)

posted @ 2009-08-11 19:49 把握命運 閱讀(801) | 評論 (0)編輯 收藏

C++和C語言在文件操作打開方式上的對應

//這是C++文件打開的部分實現fiopen.cpp文件的一個函數,看了就明白了
_CRTIMP2_PURE FILE *__CLRCALL_PURE_OR_CDECL _Fiopen(const _Sysch_t *filename,
    ios_base::openmode mode, 
int prot)
    
{    // open a file with native name
    static const _Sysch_t *mods[] =
        
{    // fopen mode strings corresponding to valid[i]
        _SYSCH("r"), _SYSCH("w"), _SYSCH("w"), _SYSCH("a"),
        _SYSCH(
"rb"), _SYSCH("wb"), _SYSCH("wb"), _SYSCH("ab"),
        _SYSCH(
"r+"), _SYSCH("w+"), _SYSCH("a+"),
        _SYSCH(
"r+b"), _SYSCH("w+b"), _SYSCH("a+b"),
        
0}
;

    
static const int valid[] =
        
{    // valid combinations of open flags
        ios_base::in,
        ios_base::
out,
        ios_base::
out | ios_base::trunc,
        ios_base::
out | ios_base::app,
        ios_base::
in | ios_base::binary,
        ios_base::
out | ios_base::binary,
        ios_base::
out | ios_base::trunc | ios_base::binary,
        ios_base::
out | ios_base::app | ios_base::binary,
        ios_base::
in | ios_base::out,
        ios_base::
in | ios_base::out | ios_base::trunc,
        ios_base::
in | ios_base::out | ios_base::app,
        ios_base::
in | ios_base::out | ios_base::binary,
        ios_base::
in | ios_base::out | ios_base::trunc
            
| ios_base::binary,
        ios_base::
in | ios_base::out | ios_base::app
            
| ios_base::binary,
        
0}
;

    FILE 
*fp = 0;
    
int n;
    ios_base::openmode atendflag 
= mode & ios_base::ate;
    ios_base::openmode norepflag 
= mode & ios_base::_Noreplace;

    
if (mode & ios_base::_Nocreate)
        mode 
|= ios_base::in;    // file must exist
    if (mode & ios_base::app)
        mode 
|= ios_base::out;    // extension -- app implies out

    mode 
&= ~(ios_base::ate | ios_base::_Nocreate | ios_base::_Noreplace);
    
for (n = 0; valid[n] != 0 && valid[n] != mode; ++n)
        ;    
// look for a valid mode

    
if (valid[n] == 0)
        
return (0);    // no valid mode
    else if (norepflag && mode & (ios_base::out || ios_base::app)
        
&& (fp = _Xfsopen(filename, _SYSCH("r"), prot)) != 0)
        
{    // file must not exist, close and fail
        fclose(fp);
        
return (0);
        }

    
else if (fp != 0 && fclose(fp) != 0)
        
return (0);    // can't close after test open
    else if ((fp = _Xfsopen(filename, mods[n], prot)) == 0)
        
return (0);    // open failed

    
if (!atendflag || fseek(fp, 0, SEEK_END) == 0)
        
return (fp);    // no need to seek to end, or seek succeeded

    fclose(fp);    
// can't position at end
    return (0);
        }

posted @ 2009-08-11 18:52 把握命運 閱讀(638) | 評論 (0)編輯 收藏

整理一下網上的那個vc遍歷網頁的程序

     摘要: #include <stdio.h>#include <tchar.h>#include<iostream>#include<exdisp.h>#include <atlbase.h>  #include <atlcom.h>#include<mshtml.h&...  閱讀全文

posted @ 2009-08-10 17:40 把握命運 閱讀(891) | 評論 (0)編輯 收藏

C++編程練習作業

     摘要: //Computer.h#pragma once#include"CPU.h"#include"Memory.h"#include"MainBoard.h"#include"Monitor.h"class CComputer{private:    CCPU m_cpu;    CMemo...  閱讀全文

posted @ 2009-08-07 16:41 把握命運 閱讀(308) | 評論 (0)編輯 收藏

C++編程練習1

 

C++編程練習1

實現一個計算機的Class的層次結構

l         CPU

Method :設定廠商名稱

       :取得廠商名稱

       :取得價格

:設定主頻

       :取得價格實現方法:根據主頻的范圍和廠商確定(自己自由發揮)

l         Memory

Method :設定廠商名稱

       :取得廠商名稱

       :取得價格(自己自由發揮)

:設定大小

       :取得價格實現方法:根據內存大小的范圍和廠商確定

l         MainBoard

Method :設定廠商名稱

       :取得廠商名稱

       :取得價格(自己自由發揮)

:取得價格實現方法:根據廠商確定

Plug(CCPU*,CMemory* )

SelfCheck() 檢察是否plug過正確的CPU, Memory

l         Monitor

Method :設定廠商名稱

       :取得廠商名稱

       :取得價格

       :設定大小

       :設定類型:一般。液晶

       :取得價格實現方法:根據大小,是否液晶和廠商確定(自己自由發揮)

類計算機:

    包含以上幾個類的成員

Method :設定CPU主頻

:設定CPU廠商(A,B,C)

       :設定Memory大?。?/span>128,256,512

:設定Memory廠商(A,B,C)

       :設定顯示器大?。?/span>14,151719),類型(一般,液晶)

       :設定顯示器廠商(A,B,C)

       :設定主版的廠商(A,B,C)

:察看整機價格(打印到屏幕)

       :察看配置(打印到屏幕)

       Init() (調用MainBoard.Plug())

       Start() (調用MainBoard.SelfCheck() )

l         Computer類:包含上面幾個類的對象。

寫一個小程序,動態創建一個10Computer的數組,設定察看每一臺的配置,計算總價格等。

要求正確的釋放對象的數組。

 

 

 

posted @ 2009-08-07 13:29 把握命運 閱讀(642) | 評論 (0)編輯 收藏

C++構造函數中必須使用參數列表的三種情況

const類型成員
引用類型成員
類類型成員

posted @ 2009-08-07 11:21 把握命運 閱讀(434) | 評論 (0)編輯 收藏

僅列出標題
共5頁: 1 2 3 4 5 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲风情亚aⅴ在线发布| 午夜久久一区| 亚久久调教视频| 亚洲视频综合在线| 亚洲欧美另类中文字幕| 亚洲一区二区三区午夜| 亚洲风情亚aⅴ在线发布| 91久久综合| 一本色道久久综合亚洲精品高清| 亚洲国产精品欧美一二99| 9l国产精品久久久久麻豆| 亚洲欧美国产精品专区久久| 欧美一区二区三区在线看 | 亚洲自拍电影| 久久国产日韩| 欧美顶级少妇做爰| 国产精品都在这里| 一区二区三区中文在线观看| 亚洲理伦在线| 久久久91精品国产一区二区三区| 欧美夫妇交换俱乐部在线观看| 亚洲美女在线观看| 欧美一二三视频| 欧美黄色成人网| 国产精品色一区二区三区| **欧美日韩vr在线| 亚洲一区国产一区| 久久综合久色欧美综合狠狠| 91久久线看在观草草青青| 在线亚洲一区观看| 裸体女人亚洲精品一区| 欧美性猛交xxxx乱大交蜜桃 | 国产区在线观看成人精品| 亚洲激情中文1区| 欧美一区二区三区日韩视频| 亚洲激情一区二区三区| 欧美成人在线免费观看| 一区二区欧美激情| 免费人成网站在线观看欧美高清| 国内久久视频| 久久久久久久久久久成人| 在线欧美电影| 亚洲精品一区二区三区99| aa级大片欧美三级| 狼人社综合社区| 亚洲午夜激情免费视频| 欧美高清不卡在线| 在线视频观看日韩| 久久精品久久99精品久久| 99成人精品| 欧美精品videossex性护士| 国内精品伊人久久久久av一坑| 9色国产精品| 亚洲激情偷拍| 美日韩精品视频免费看| 国产一区二区三区在线免费观看 | 日韩一区二区福利| 久久精品日韩一区二区三区| 夜夜嗨av色综合久久久综合网| 欧美不卡视频一区| 亚洲欧洲在线播放| 欧美大片在线看| 蜜臀久久99精品久久久久久9 | 欧美韩日高清| 亚洲日本黄色| 亚洲精品123区| 欧美激情亚洲另类| 99国产精品视频免费观看一公开| 欧美高清hd18日本| 欧美成人一区在线| 在线亚洲激情| 一本色道久久综合亚洲精品不 | 一区二区日韩精品| 日韩视频在线免费| 欧美午夜精品久久久久久人妖| 亚洲图色在线| 亚洲免费一级电影| 国产一区在线视频| 欧美电影免费观看高清| 欧美区国产区| 亚洲精品一级| 一区二区三区视频在线| 亚洲精品美女91| 欧美日韩国产va另类| 亚洲一区二区在线看| 亚洲女爱视频在线| 一区在线视频观看| 亚洲大胆av| 黑人巨大精品欧美黑白配亚洲 | 欧美国产视频日韩| 一区二区三区波多野结衣在线观看| 亚洲精品女人| 国产精品高清一区二区三区| 欧美中文字幕精品| 免费一级欧美片在线播放| 夜夜嗨一区二区三区| 午夜视频在线观看一区二区三区| 在线播放不卡| 一区二区欧美日韩| 国产真实乱子伦精品视频| 亚洲国产成人av好男人在线观看| 国产精品成人一区二区| 免费在线观看成人av| 欧美偷拍另类| 欧美88av| 国产一区二区黄| 亚洲免费观看高清在线观看| 国产一区二区在线观看免费| 99pao成人国产永久免费视频| 国产视频一区在线观看一区免费| 亚洲电影中文字幕| 黄色日韩在线| 亚洲婷婷综合色高清在线| 亚洲人成艺术| 久久精品夜色噜噜亚洲aⅴ| 亚洲欧美国产另类| 欧美另类99xxxxx| 美女网站久久| 国产精品天美传媒入口| 亚洲欧洲精品一区二区三区波多野1战4 | 亚洲精品欧美精品| 尤物在线观看一区| 欧美资源在线观看| 欧美一区二区精品在线| 欧美日韩在线观看一区二区| 亚洲成在人线av| 亚洲成人在线免费| 欧美在线播放一区| 久久久久国产一区二区三区四区| 国产精品国产三级国产aⅴ浪潮| 亚洲福利视频免费观看| 亚洲成人在线观看视频| 久久视频这里只有精品| 久久一区二区三区超碰国产精品| 国产欧美日韩91| 欧美一区二区成人| 亚洲国产精品久久久久婷婷884| 欧美不卡福利| 国产精品主播| 亚洲一区二区三区中文字幕在线 | 亚洲三级视频在线观看| 久久综合伊人77777麻豆| 美女被久久久| 在线观看亚洲视频啊啊啊啊| 欧美一区二区三区啪啪 | 99这里有精品| 亚洲影院免费观看| 国产精品国产a级| 亚洲欧美国产视频| 久久av在线| 国产一区二区在线观看免费| 久久精品成人| 欧美高清在线精品一区| 亚洲三级色网| 欧美亚洲第一区| 午夜精品一区二区三区电影天堂 | 午夜精品福利视频| 久久色中文字幕| 在线电影一区| 欧美精品一区二区三区在线看午夜| 亚洲欧洲在线播放| 亚洲免费一级电影| 国产亚洲欧美aaaa| 久久综合色播五月| 日韩视频在线永久播放| 午夜亚洲视频| 在线国产精品播放| 欧美日韩一区二区三区在线| 亚洲欧美精品中文字幕在线| 久久在线免费观看| 99riav久久精品riav| 国产精品一区一区三区| 久久综合图片| 亚洲一区国产| 欧美r片在线| 亚洲欧美在线看| 亚洲成色www久久网站| 欧美日韩成人精品| 欧美亚洲综合另类| 亚洲激情偷拍| 久久中文久久字幕| 亚洲校园激情| 亚洲第一网站| 国产精品美腿一区在线看| 老司机精品视频一区二区三区| 在线视频欧美日韩精品| 欧美国产先锋| 久久精品导航| 亚洲小说欧美另类社区| 亚洲国产婷婷香蕉久久久久久| 欧美日韩亚洲系列| 免费一区二区三区| 久久爱www久久做| 一本色道久久88精品综合| 免费观看成人www动漫视频| 性18欧美另类| 这里只有精品在线播放| 欧美国产大片| 亚洲日本va午夜在线电影| 国产农村妇女毛片精品久久麻豆|