まず第一に、sizof(long)
実装固有であり、64 ビット Linux では 8 バイトですが、Windows と 32 ビット Linux では 4 バイトです。malloc(8)
明示的に 8 バイトを割り当てたい場合に使用します。ただし、 を保存したいのでint
、 を使用するようmalloc(sizeof(*mem_start_ptr))
です。また、 の戻り値をキャストしないでくださいmalloc
。C では冗長であり、バグを隠すことさえできます。次に、これら 2 つの 4 バイト値を格納するには、次のようにします。
/* for the first one. Let's use 42 */
*mem_start_ptr = 42;
/* for the second one. Let's put the value of of some variable here */
*(mem_start_ptr + 1) = int_variable;
ポインター演算について読む必要があります。また、おそらく配列についても。Google はあなたの友達です。また、あなたのコードのこの部分が何のためにあるのかわかりません。それはあなたがおそらく期待することをしないので:
int data;
data = &mem_start_ptr
最後に、あなたのコードを次のように書き直します。
int *mem_start_ptr;
mem_start_ptr = malloc(sizeof(*mem_start_ptr));
*mem_start_ptr = your_1st_4bytes;
*(mem_start_ptr + 1) = your_2nd_4bytes;
free()
不要になったら忘れずに。また、ここでは撮影しませんでしたが、失敗した場合はそれを返すためNULL
、を確認することも忘れないでください。malloc()
もう一度 - ポインター演算について読んでください。Google はあなたの友達です ;]