私は非常に基本的な疑いがあります。文字列へのポインタを宣言します。文字列へのポインタの初期化
char *data;
と
data = malloc(13*sizeof(char));
私の質問は、私は、文字列を初期化しない方法で、次のようにメモリを割り当てます。 は
data = NULL;
行うには正しいことです。
おかげ
私は非常に基本的な疑いがあります。文字列へのポインタを宣言します。文字列へのポインタの初期化
char *data;
と
data = malloc(13*sizeof(char));
私の質問は、私は、文字列を初期化しない方法で、次のようにメモリを割り当てます。 は
data = NULL;
行うには正しいことです。
おかげ
あなたが、その後、使用にmemset
あなたは空の文字列に文字列を初期化したい場合は、
*data = '\0';
を行うには正しいことです。あなたが割り当てた13バイトのメモリではなく、可変ポイントをNULLにすることでした。
空の文字列が必要な場合は、data[0] = '\0'
だけでも問題ありません。あなたのサンプルショーのようなdata = NULL
を設定すると、メモリ割り当てがリークするだけです。
いいえ、memset/memcpy関数またはstrncpy関数を検討してください。
memset(void *b, int c, size_t len);
を使用すると、memcpyをして、メモリ領域をinitalizeたり、メモリ領域にデータをコピーすることができますstrncpすることができます。文字列を扱う場合は、strncpyを使用してください。
お楽しみください
初期設定はどういう意味ですか?そして、それはあなたが今、割り当てられたメモリのブロックを持っているが、ポインタを持たないので、正しいことではありません。メモリーリーク。 – Griffin
@グリフィン...私は疑いがあり、あなたのようなインテリジェントな人々の助けが必要でした。 –