例如:
type
trec = record
i : integer;
s : string;
r : real;
end;
prec = ^trec;
procedure tform1.button4click(sender: tobject);
varrec : prec;
begin
new(rec);
rec^.i := 10;
rec^.s := 'the hello word';
rec^.r := 6.34;
dispose(rec);
end;
注意:關鍵字new/dispose組合可以給自定義結構等已知大小的機構指標開闢記憶體空間以及**記憶體。而且比用getmem()和allocmem()要安全和方便。但是要注意不能給pchar和無型別指標開闢記憶體,因為編譯器不知道要分配多少位元組的記憶體空間。
所以,getmem()和allocmem()通常用於給編譯器預先不知大小的結構分配記憶體。記住不要操作申請記憶體之外的資料,這會引發著名的access voilation錯誤。
應該用freemem()去清除getmem()和allocmem()申請的記憶體空間。值得一提的是,相比較getmem()而言,allocmem()要來得更安全一些。因為allocmem()總是把申請到的記憶體初始化為0。
自定義結構體封裝
使用nsvalue如下方法進行裝箱 nsvalue valuewithbytes const void value objctype const char type 呼叫下面的方法進行拆箱 void getvalue void value main.m foundationframework cre...
自定義型別 結構體
struct tag 結構體型別名稱 variable list 結構體變數 省略結構體型別名稱 匿名結構體型別 當省略掉結構體型別名稱時,就不能省略掉結構體變數,這樣是不合理的,所以一般我們不建議省略結構體型別名 struct x,y 全域性變數 struct a 20 p int main 注意...
自定義型別 結構體(1)
結構體與陣列的區別 陣列的元素可以通過下標訪問,這是因為,陣列的長度相同。但是,結構體每乙個成員的長度都可能不同,所以不能通過下標來訪問它們,但是,結構體的每個成員都有自己的名字,結構體是通過名字來訪問的。結構體宣告結構體是一些值的集合,這些值稱為它的成員,乙個結構體的各個成員具有不同的型別。str...