0

メモリプールと他の変数タイプのポインタの割り当てに関して、char配列がどのように機能するかについて簡単な質問があります。私はメモリプールにchar配列を使用する割り当てに取り組んでおり、それにポインタを割り当てることができる必要があります。この件に関する情報をいくつか読みましたが、実際の割り当てがどのように機能するかを完全には理解していません。そのような:

const int poolSize = 60000;
char pool[poolSize];

void* allocate(int aSize)
{

   //.....

 return ((void*) 0);
}

long* pointer;
pointer = (long *) allocate(sizeof(long));
*pointer = 0xDEEDEEEF;

charは1バイトで、longは4である必要があるため、これがどのように機能するのか正確にはわかりません。配列内の4つのスポットを1つの長いポインター変数に割り当てる必要がある場合、このようなものはどのように機能しますか?また、例や説明もお気軽にどうぞ。ただし、この部分がどのように機能するかを正確に理解したら、自分で理解したいので、プログラム全体がどのように機能するかを明かさないでください。ありがとう

4

1 に答える 1

2

メモリの割り当ては、タイプとは無関係です。つまり、long/char.etc かどうかは関係ありません。ただし、「バイト」で定量化されます。また、char は 1 バイトのメモリを使用する唯一のデータ型です。

割り当てられたメモリをどのように扱うかは、プログラムにあります。例えば

char s[4]={0,0,0,'A'};
int *p = (int*)s; //treating those 4 bytes as int
printf("%d",*p); //will print 65  

最初の 4 ~ 5 のスタンフォード プログラミング パラダイムの講義を視聴することをお勧めします。メモリ割り当ては、これらの講義で非常によく説明されています。The C Programming language - by Denis Ritchie の第 8 章も参照できます。

于 2013-02-23T07:46:43.170 に答える