2

これ:

char *buf = NULL;
scanf("%ms", &buf);

動的に割り当てられた char バッファーを取得します。これは、Gcc (特に glibc のバージョン 2.7) でコンパイルされたコードに限定されていることはわかっています。

また、「正しい」ポータブルな方法は、malloc()(および友人)を使用してメモリを取得することであることも認識しています。

私は興味がありますが、動的に割り当てられたメモリを取得するための他のポータブルまたはセミポータブル*実装はありますか? C でのメモリ割り当ての秘訣やヒントは、「Google」にとって難しいトピックだと思います。

注:これは「必須」ではないため、回答に制限はありません。

* セミポータブルの意味は、「私と同じようにコンパイルすれば、これは動作する」という意味です

4

1 に答える 1

1

POSIXには

ssize_t getline(char **lineptr, size_t *n, FILE *stream);

ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);

これは、セミポータブルとしての資格があるはずです。

于 2012-12-13T15:29:07.683 に答える