strtok()
を使用するたびに文字列のメモリを再割り当てする必要がありますか?私は、ファイルから行を読み込んでトークンに分割するプログラムを作成しているので、疑問に思っています。それぞれのトークンをcell
という変数に格納したいとします。私は複数の文字列を作成し、それらをリンクリストに入れることができますが、それはプログラムにオーバーヘッドを増やすことになるので、できればそれを避けようとします。つまり、strtok()
から返された最初の文字列にcell
の値を設定し、それを使用して、代入文を使用して、strtok()
の形式の2番目の文字列にその値を設定します。私はこれが単に新しい文字配列にポインタをリダイレクトし、古い配列を放棄することを理解します。古い文字列が失われたオブジェクトになるか、strtok()
は古い文字列を解放しますか?strtok()関数を使用したときのメモリ割り当て
-1
A
答えて
1
strtok
は文字列を割り当てません。\0
文字をソース文字列に挿入し、現在分離しているトークンを指すポインタを返します。ソース文字列のメモリは、複数の文字列(トークン)を格納するメモリになりました。
0
strtok
メモリを割り当てません。最初の呼び出しで渡す文字列を変更します。トークンはトークン化されている元の文字列に残されているため、割り当て解除されていない限り(strtok
はそれを行いません)、あなたのトークンはそこに残ります。
関連する問題
- 1. Python Ctypes関数のメモリ割り当て
- 2. Swift UnsafeMutablePointer関数内のメモリ割り当てと割り当て解除
- 3. Python_Random関数を使用した変数の割り当て
- 4. Cの関数と変数のメモリ割り当て
- 5. プラットフォームのInvoke(C#)を使用したアンマネージコードのメモリの割り当てと割り当て解除
- 6. unordered_mapを使用した場合のメモリ割り当て
- 7. deleteキーワードを使用したメモリの割り当て解除 -
- 8. メモリ割り当てとループ
- 9. callocを使用したメモリ割り当て
- 10. メモリ割り当て関数を条件文として使用するとどうなりますか
- 11. Pythonリストの割り当てとメモリ割り当て
- 12. 割り当てメモリ**
- 13. メモリ割り当て
- 14. 割り当てメモリ
- 15. メモリ割り当て
- 16. メモリ割り当て
- 17. 割り当てメモリ
- 18. PHPメモリとOS割り当てメモリ
- 19. dllの境界を越えたメモリ割り当てと割り当て解除
- 20. mulを使ったedx :: eaxとレジスタのメモリ割り当て
- 21. stlと動的メモリ割り当てを持たないメンバ関数クラス
- 22. ネットワークI/OとC++用のバッファの動的なメモリ割り当てと静的なメモリの割り当て
- 23. ポインタを使用せずにポインタVSを使用したメモリ割り当て
- 24. c malloc関数を使用したメモリ割り当ての予期しない結果
- 25. ポインターの配列の関数にメモリを割り当てて値を割り当てる方法は?
- 26. ユーザーに返す関数にメモリを割り当てる
- 27. CUDAは__device__関数でメモリを割り当てます
- 28. Dalvikのメモリ割り当て
- 29. Magentoのメモリ割り当て
- 30. iphoneのメモリ割り当て
https://www.google.com/search?q=parse+a+string+using+strtok – alk
['strtok'](http://en.cppreference.com/w/c/string/byte/strtok)はメモリを割り当てません。あなたはそれが何と思いますか? –
'strtok'は区切り文字を連続的に '' \ 0 ''で置き換えます。これは文字列を変更しますが、メモリ内の元の場所の部分文字列を保持します。 –