私はchar*
を返す関数を持っています。このchar *は、他のプログラムによって消去または再利用されてはなりません。私はC++でmallocを使用しないことを知っていますが、あなたと私はnew
を使ってメモリ内の領域を割り当てます。Cで標準のlibは返されたchar *変数を使用しませんか?
私が行う場合:戻ったときに、このスペースはもはやので、このバッファptr
を返す現在の関数に帰属します
char buffer[100]; //I just sub'ed rbp at least 100bytes+allign
は危険です。
結論として、私はなぜstdio
と他のいくつかのlibsがcharポインタを返すことができるのだろうと思っていました。それらはmallocで割り当てられているか、スタックに入っていますか? の安全な文字配列を返すためにC(only)関数を実装するにはどうすればいいですか??
彼らが何を指しているかによって異なります。あなたはどの機能を考えていますか?あなたはその機能に関するドキュメントを読んだことがありますか? – immibis
は、ソケットfdからデータを受け取り、それを返す関数です。私が知っているのは、もし私が戻ってきたときにバッファーすることができたら、私は後で解放する必要がある。しかし、同じことをするのは面倒だということを知っています。だから、inet_net_ntop()はchar *(またはconst char *)を返します。私がそれを使うときは、フリーでも何でも気にしません。私はそれを使用して、私が終わったらそれは終わった。 inet_net_ntop()は内部的にmallocを使用しますか? – int3
ポインタを返す関数のドキュメントは、そのポインタをどのように管理する必要があるかを(直接的または間接的に)指示する必要があります。すべての機能に対して単一の答えはありません。 –