乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Delphi 的內(nèi)存操作函數(shù)(4): 清空與填充內(nèi)存

       獨(dú)孤求財(cái) 2012-03-30

      FillMemory、ZeroMemory 一目了然的兩個(gè)函數(shù), 但其實(shí)它們都是調(diào)用了 FillChar;

      清空不過(guò)就是填充空字符(#0: 編號(hào)為 0 的字符), 說(shuō)來(lái)說(shuō)去是一回事.

      為了下面的測(cè)試, 先寫一個(gè)以十六進(jìn)制方式查看內(nèi)存的函數(shù):
      function GetMemBytes(var X; size: Integer): string;
      var
        pb: PByte;
        i: Integer;
      begin
        pb := PByte(X);
        for i := 0 to size - 1 do
        begin
          Result := Result + IntToHex(pb^, 2) + #32;
          Inc(pb);
        end;
      end; {GetMemBytes end}
      
      //測(cè)試:
      var
        p1: PAnsiChar;
        p2: PWideChar;
        s1: AnsiString;
        s2: UnicodeString;
      begin
        p1 := 'ABCD';
        p2 := 'ABCD';
        s1 := 'ABCD';
        s2 := 'ABCD';
      
        ShowMessage(GetMemBytes(p1,4)); {41 42 43 44}
        ShowMessage(GetMemBytes(p2,8)); {41 00 42 00 43 00 44 00}
        ShowMessage(GetMemBytes(s1,4)); {41 42 43 44}
        ShowMessage(GetMemBytes(s2,8)); {41 00 42 00 43 00 44 00}
      end;
      

      測(cè)試 FillMemory、ZeroMemory、FillChar 三個(gè)填充函數(shù):
      const
        num = 10;
      var
        p: PChar;
      begin
        p := StrAlloc(num);
      
        ShowMessage(GetMemBytes(p, num)); {從結(jié)果看出 StrAlloc 沒(méi)有初始化內(nèi)存}
      
        FillMemory(p, num, Byte('A'));
        ShowMessage(GetMemBytes(p, num)); {41 41 41 41 41 41 41 41 41 41}
      
        ZeroMemory(p, num);
        ShowMessage(GetMemBytes(p, num)); {00 00 00 00 00 00 00 00 00 00}
      
        FillChar(p^, num, 'B');
        ShowMessage(GetMemBytes(p, num)); {42 42 42 42 42 42 42 42 42 42}
      
        StrDispose(p);
      end;
      

      此時(shí), 我想到一個(gè)問(wèn)題:
      GetMem 和 GetMemory 沒(méi)有初始化內(nèi)存; AllocMem 會(huì)初始化內(nèi)存為空, 那么
      ReallocMem、ReallocMemory 會(huì)不會(huì)初始化內(nèi)存?
      測(cè)試一下(結(jié)果是沒(méi)有初始化):
      {測(cè)試1}
      var
        p: Pointer;
      begin
        p := GetMemory(3);
        ShowMessage(GetMemBytes(p, 3));
        ReallocMem(p, 10);
        ShowMessage(GetMemBytes(p, 10)); {沒(méi)有初始化}
        FreeMemory(p);
      end;
      
      {測(cè)試2}
      var
        p: Pointer;
      begin
        p := AllocMem(3);
        ShowMessage(GetMemBytes(p, 3));
        ReallocMem(p, 10);
        ShowMessage(GetMemBytes(p, 10)); {沒(méi)有初始化}
        FreeMemory(p);
      end;
      

      另外: FillMemory、ZeroMemory 的操作對(duì)象是指針, 而 FillChar 的操作對(duì)象則是實(shí)體.

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多