0

そのためにC標準を検索しましたが、その質問については何も見つかりませんでした。それが実装定義の場合、このようにmallocを使用することが常に安全なのはなぜですか?

char *p = (char*) malloc(100);
if (p == NULL)
      return;

for (i=0; i<100; i++)
{
     p[i] = ........
}
4

1 に答える 1

1

メモリを割り当てられなかった場合、malloc は NULL を返します。だからこそ、そのようにテストすることができます。

NULL は標準でヌル ポインターとして定義されており、任意のオブジェクトまたは関数へのポインターと等しくないことが保証されています。これは、メモリの場所にはなり得ないもののアドレスです。

ポインターは、メモリの場所を指すだけです。C では、メモリを割り当てると、そのメモリの最初のバイトが常にポイントされます。メモリの開始位置とサイズがわかれば、メモリの終了位置がわかります。

ただし、ポインターはその配列内の任意の場所を指すことができます。char * p_pointer = p + 1 または同等の &p[1]; を設定できます。p_pointer[-1] は p[0] を指します。

于 2013-09-15T09:11:39.313 に答える