提起された質問
malloc と virtualAlloc には慣れていますが、LocalAlloc を初めて見たときは戸惑いました。Baidu の朝、LocalAlloc、VirtualAlloc、HeapAlloc およびその他のメモリ割り当て関数の違いは何ですか。違いをまったく知りたくありません。使い方を知りたいだけですが、誰もコードを書いていないので、一目でわかる、なんて犬なんだ。
使用法
1. 関数プロトタイプ
HLOCAL LocalAlloc(
UINT uFlags, //一般设置为0x40,表示即将分配的内存被初始化为0
SIZE_T uBytes //分配内存的尺寸,根据你的需求来。
);
2.使用する
では、割り当てられたメモリをどのように使用するのでしょうか? ナンセンスではありません、コードを見てください
HLOCAL m=LocalAlloc(LMEM_ZEROINIT, 0x200); //0x40,就是LMEM_ZEROINIT
memcpy(m, "hello", 5);
printf("%s\n", (LPSTR)m);
3. まとめ
このスペースに値を直接代入する方法があるかどうかはわかりません.たとえば、次のコードは間違っています.
HLOCAL m=LocalAlloc(LMEM_ZEROINIT, 0x200);
m="hahahah"; //会报错的
返された HLOCAL は、割り当てられた空間を指すポインター アドレスと見なすことができますが、*m を使用して参照することはできず、エラーが発生します。memset、memcpyなどの代入関数を使用し、今後何か違うことが見られた場合は引き続きフォローしてください