• <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>
            posts - 62,  comments - 19,  trackbacks - 0

            試題 4

            void GetMemory( char *p )
            {
            ? ?p = (char *) malloc( 100 );
            }

            void Test( void )
            {
            ? ?char *str = NULL;

            ? ?GetMemory( str );
            ? ?strcpy( str, "hello world" );
            ? ?printf( str );
            }
            試題 5

            char *GetMemory( void )
            {? ?
            ? ???char p[] = "hello world";? ?? ?

            ? ???return p;??
            }
            void Test( void )
            {? ?
            ? ???char *str = NULL;??

            ? ???str = GetMemory();? ?
            ? ???printf( str );? ?
            }

            試題 6
            void GetMemory( char **p, int num )
            {
            ? ???*p = (char *) malloc( num );
            }
            void Test( void )
            {
            ? ???char *str = NULL;

            ? ???GetMemory( &str, 100 );
            ? ???strcpy( str, "hello" );
            ? ???printf( str );
            }

            試題 7

            void Test( void )
            {
            ? ???char *str = (char *) malloc( 100 );

            ? ???strcpy( str, "hello" );
            ? ???free( str );

            ? ???...??//
            省略的其它語句

            }

            解答:

            試題 4 傳入中 GetMemory( char *p ) 函數的形參為字符串指針,在函數內部修改形參并不能真正的改變傳入形參的值,執行完

            char *str = NULL;

            GetMemory( str );

            后的 str 仍然為 NULL

            試題 5

            ? ???char p[] = "hello world";? ?

            ? ???return p;??

            p[] 數組為函數內的局部自動變量,在函數返回后,內存已經被釋放。這是許多程序員常犯的錯誤,其根源在于不理解變量的生存期。
            試題 6 GetMemory 避免了試題 4 的問題,傳入 GetMemory 的參數為字符串指針的指針,但是在 GetMemory 中執行申請內存及賦值語句

            p = (char *) malloc( num );

            后未判斷內存是否申請成功,應加上:

            if ( p == NULL )
            {

            ? ?...//
            進行申請內存失敗處理
              }

            試題 7 存在與試題 6 同樣的問題,在執行

            char *str = (char *) malloc(100);

            后未進行內存是否申請成功的判斷;另外,在 free(str) 后未置 str 為空,導致可能變成一個 指針,應加上:

            str = NULL;

            試題 6 Test 函數中也未對 malloc 的內存進行釋放。

            剖析:

            試題 4 7 考查面試者對內存操作的理解程度,基本功扎實的面試者一般都能正確的回答其中 50~60 的錯誤。但是要完全解答正確,卻也絕非易事。

            對內存操作的考查主要集中在:

            1 )指針的理解;

            2 )變量的生存期及作用范圍;

            3 )良好的動態內存申請和釋放習慣。

            在看看下面的一段程序有什么錯誤:

            swap( int* p1,int* p2 )
            {
            ? ???int *p;

            ? ???*p = *p1;
            ? ???*p1 = *p2;
            ? ???*p2 = *p;
            }

            swap 函數中, p 是一個 指針,有可能指向系統區,導致程序運行的崩潰。在 VC++ DEBUG 運行時提示錯誤 “Access Violation” 。該程序應該改為:

            swap( int* p1,int* p2 )
            {
            ? ???int p;

            ? ???p = *p1;
            ? ???*p1 = *p2;
            ? ???*p2 = p;
            }















            posted on 2006-11-09 15:47 喬棟 閱讀(384) 評論(0)  編輯 收藏 引用 所屬分類: C的游樂園
            <2006年11月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            常用鏈接

            留言簿(6)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜


            My blog is worth $0.00.
            How much is your blog worth?

            久久久久亚洲av无码专区导航| 精品国产乱码久久久久软件| 色综合久久中文字幕无码| 久久人人爽人人爽人人片AV麻豆| 久久久久人妻精品一区二区三区| 国内精品伊人久久久影院| 色播久久人人爽人人爽人人片aV| 国产精品丝袜久久久久久不卡| 97热久久免费频精品99| 97久久精品人人澡人人爽| 91久久九九无码成人网站| 久久精品国产亚洲5555| 香蕉99久久国产综合精品宅男自 | 97香蕉久久夜色精品国产 | 国内精品欧美久久精品| 久久国产精品波多野结衣AV| 久久久久亚洲AV成人网| 欧美日韩精品久久久免费观看| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久精品aⅴ无码中文字字幕不卡| 国内精品久久久久伊人av| 国产精品久久久久天天影视| 日韩欧美亚洲综合久久影院d3| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久精品国产亚洲av影院| 91精品国产高清久久久久久国产嫩草| 久久夜色精品国产噜噜噜亚洲AV| 久久强奷乱码老熟女网站| 精品久久久久久成人AV| 久久夜色撩人精品国产小说| 看久久久久久a级毛片| 国产成人无码精品久久久免费 | 久久强奷乱码老熟女| 性色欲网站人妻丰满中文久久不卡| 精品久久久久久亚洲精品| 久久精品国产只有精品66| 热re99久久精品国99热| 久久九九免费高清视频| 国产婷婷成人久久Av免费高清| 久久99国产精品成人欧美| 久久99亚洲网美利坚合众国|