2017-09-25 7 views
0

私のアプリケーションはread(sockfd, buffer, BUFFSIZE, 0)です。私は、カーネルがシーンの背後でいくつかのコピー作業を行う必要があることを知っています。 bufferがスタックに割り当てられたときに何個のメモリコピーが発生し、bufferがヒープ上に割り当てられている場合に変更されますか?TCPソケットから読み取ったときにメモリコピーがいくつ発生するか

ありがとうございました。

+1

これは本当に依存しています。どのカーネルについて話していますか?どのバージョン? –

+0

'read(sockfd、buffer、BUFFSIZE、0)' ??? ** 4つのパラメータ? ['read()'は3つをとります(http://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html): 'ssize_t read(int、void *、size_t);'。 –

+0

@Someprogrammerdude私はヒープやスタックメモリのコピー数に違いがあるとは思わない。しかし、私はバージョン間に違いがあると信じています(私は彼が望む質問として理解しません)。 :) – tilz0R

答えて

0

バッファがオンの場合でも、メモリコピーの数は常に同じです。ヒープまたはスタック。差異は、データをコピーする場所にあるメモリの場所のみです。

スタックの場合、スタックオーバーフローを入力することができます。プログラムは未定義の動作を行いますが、ヒープで実行すると、不要になった後にメモリを解放しないとメモリリークに入ることがありますそれはもはや。

関連する問題