sizeof
を使用してCでポインターのサイズを取得するにはどうすればよいですか?ポインターを格納するためのメモリをmallocしたい(ポイントされている値ではない)。
任意のタイプを指定します(ここではchar
を選択しましたが、これは具体的な例のためです)。
_char *p;
_
次の式のいずれかを使用できます。
_sizeof(p)
sizeof(char *)
_
次のようなmalloc()
呼び出しにつながる:
_char **ppc = malloc(sizeof(char *));
char **ppc = malloc(sizeof(p));
char **ppc = malloc(sizeof(*ppc));
_
最後のバージョンには、ppc
のタイプが変更されても、式が依然として正しいスペースを割り当てるという利点があります。
これはトリックを行う必要があります:
sizeof(void*)
char *ptr;
char **ptr2 = malloc(sizeof(ptr));
目的を達成できるはずです。プラットフォームが何であっても、このコードは機能するはずです。