web-dev-qa-db-ja.com

Cのポインターのサイズを取得

sizeofを使用してCでポインターのサイズを取得するにはどうすればよいですか?ポインターを格納するためのメモリをmallocしたい(ポイントされている値ではない)。

18
Matt

任意のタイプを指定します(ここではcharを選択しましたが、これは具体的な例のためです)。

_char *p;
_

次の式のいずれかを使用できます。

_sizeof(p)
sizeof(char *)
_

次のようなmalloc()呼び出しにつながる:

_char **ppc = malloc(sizeof(char *));
char **ppc = malloc(sizeof(p));
char **ppc = malloc(sizeof(*ppc));
_

最後のバージョンには、ppcのタイプが変更されても、式が依然として正しいスペースを割り当てるという利点があります。

31

これはトリックを行う必要があります:

sizeof(void*)
12
John Zwinck
char *ptr;
char **ptr2 = malloc(sizeof(ptr));

目的を達成できるはずです。プラットフォームが何であっても、このコードは機能するはずです。

1
Gurpreet Singh