- 1 名前:デフォルトの名無しさん [2012/01/13(金) 22:05:06.14 ]
- C言語の*入門者*向け解説スレッドです。
★前スレ C言語なら俺に聞け(入門編)Part 94 toro.2ch.net/test/read.cgi/tech/1324648274/ ★過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000 ★教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 155代目 toro.2ch.net/test/read.cgi/tech/1325685876/ ★C++言語については避けてください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 長くなりそうなコードはcodepadに貼り付けてもいいでしょう codepad.org/
- 22 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:35:19.42 ]
- >19
>8 の >str[1] = inStr + 1 ; でいいんじゃないの?
- 23 名前:o mailto:sage [2012/01/14(土) 12:40:46.42 ]
- >>22
うむむ。 分からないのは、 「inStr+1」で指定されたアドレスは、func1がreturnされると開放されるメモリアドレスじゃないですか? そうすると、そのアドレスを入れ込んだstr[1]の内容(=アドレス)も開放されてしかるべきアドレスじゃないかと?
- 24 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:43:49.29 ]
- 17を100回読め
- 25 名前:o mailto:sage [2012/01/14(土) 12:43:50.36 ]
- コンパイルエラーでできないんだけれども、こんなことをやりたいんだと言うことです。
*( str[1] ) = *( inStr + 1) ;
- 26 名前:o mailto:sage [2012/01/14(土) 12:46:49.28 ]
- >>24
20回読みましたデス。足りないかな? スタティックなリテラル値の話ではなく、自動変数に格納されている値を戻したいと言うことですが・・・ 戻すとき、リターン値はエラーコードで使用されていますのでリターンで戻すのは不可です。 なのでfunc1にポインタで渡して、その内容を更新したい、ということです。 もう20回読んでみます。
- 27 名前:o mailto:sage [2012/01/14(土) 12:51:23.74 ]
- 後だしと言われるのを避けるために、実際のコードの説明をしますが、
実際にはfunc1 には構造体を渡しています。 正確には構造体のアドレスを渡してます。 構造体は typedef struct s{ char* field[MaxHeaderNum]; char* attrib[MaxHeaderNum]; }S;
- 28 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 12:53:18.74 ]
- こうか?
str[1] = (char *)malloc(strlen(inStr + 1)+1) ; if(!str[1]){ /*エラー処理*/ } strcpy( str[1] , inStr + 1);
- 29 名前:o mailto:sage [2012/01/14(土) 13:01:30.86 ]
- >>28
すんばらしい。 そういうことです。 はじめはそのように書いていたのですが、 非常に頻繁に呼ばれることと、 mainのなかでいつfreeすればよいのかが不定であることや、 関数を変にまたがってしまう、 などなどの複雑な問題により諦めてしまいました。 で、コードをシンプルにする方法でのアプローチでコーディングしなおしてます。 ヒープを使わなければ無利なのでしょうか?
- 30 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 13:05:33.73 ]
- とりあえず
char* str[10] をゼロクリアしてから使え。 あとは終了時とmallocする前にNULLで無ければfreeするような処理書いとけばいいんじゃね?
- 31 名前:o mailto:sage [2012/01/14(土) 13:16:46.64 ]
- >>30
だんけ ってことは、>>8はたまたまうまく行っているだけってことかな?
- 32 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 13:48:33.33 ]
- 長引いてるな…
>スタティックなリテラル値の話ではなく、自動変数に格納されている値を戻したいと言うことですが・・・ 自動変数に〜というなら、malloc でヒープに領域を確保して、外部で解放するしかない。 自動で解放して欲しいのなら、C++ に行ってデストラクタなり std::string なりに頼る。 >>8 はスタティックなリテラルのポインタを返してるので、たまたまではなく正常に動作する。ただし貴方の求めているものではない。
- 33 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 14:04:28.58 ]
- メールとかの通信関係の処理か?
クラス化の設計とか楽しそうだなぁ。
- 34 名前:o mailto:sage [2012/01/14(土) 16:19:51.99 ]
- >>32
ありがと。 参考になります。 >>33 bingo HTTPだけど。 移植性を考えてて、ANSI-Cベースで書いているところが、またそれはそれで、制限が多いw
- 35 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 16:39:47.31 ]
- >>15の
> 参照しているのはfunc1のスタック上にあるinStrのアドレスである。 これが間違えていることには気づいているのだろうか inStrのアドレスは&inStrな。
- 36 名前:o mailto:sage [2012/01/14(土) 16:41:00.07 ]
- >>35
宣言が、 char* inStr だけれども?
- 37 名前:デフォルトの名無しさん [2012/01/14(土) 16:44:53.84 ]
-
反日ネット工作員 朝日新聞社→社員約300人 民主党とその取り巻きの資金が入った反日工作会社→数社約450人 朝日新聞の社員は捕まった49歳の編集者を含め新聞記事を書く合間に2chを荒らしている程度とみられているが 民主党が用意した反日工作会社はほぼ24時間体制で工作を行っている 工作範囲は民主党が予め工作費を流している2ch、ニコニコ動画を中心にyoutube、個人のブログなどである。
- 38 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 17:33:17.30 ]
- >19
>inStrの具体的な値を、str[1]に入れ込むためにはどうしたらよいのか?と言うことです。 「inStrの具体的な値」と言ったらinStrに代入されてる"test"のアドレス値のことだろ。 それが >28 が正解というなら 「inStrのポインタが示す先の文字列をコピーして、str[1]に入れ込むためにはどうしたらよいのか?」 と言うべきだろ。 まぁ、そう言えるぐらい理解できてるなら質問もしてこないだろうが。
- 39 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 17:53:22.36 ]
- >>36
だから?
- 40 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 18:06:19.42 ]
- sizeof(char *) == sizeof(int)
なら void func1(char* str[] ) { int inStr; inStr = (int)anotherFunc() ; str[1] = (char *)(inStr + sizeof(char)) ; return ; } としても同じ結果なんだよ。
- 41 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 18:29:39.07 ]
- intptr_t 使えよ
- 42 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 18:47:25.84 ]
- >>40
日記ならチラシに
- 43 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 19:56:46.82 ]
- 別名便所の壁の2chがチラシより上とな!?
- 44 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 00:10:00.07 ]
- 便所の壁はみんなの目に触れるからな
- 45 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 00:33:43.37 ]
- 都内じゃ1500枚ほどチラシが貼られたらしいな。
- 46 名前:o mailto:sage [2012/01/15(日) 07:51:27.88 ]
- >>38
>「inStrのポインタが示す先の文字列をコピーして、str[1]に入れ込むためにはどうしたらよいのか?」 コピーして の部分が全く違う。 コピーしてよいのなら、解決法はいくつでもある。
- 47 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 10:35:38.71 ]
- >46
>28 >strcpy( str[1] , inStr + 1); コピーしてるやん。 違うというなら正しいソース書いてみてよ。
- 48 名前:o mailto:sage [2012/01/15(日) 11:21:44.71 ]
- >>47
多分、言いたいことの1/1000も伝わっていないんだと思う。 バッファから下ろしてきたデータは一時的にしかるべき場所に「コピーして」配置される。 俺の言っているのは、 そのしかるべき場所のポインタを渡すだけにしたいんだが、何とかならんのんかの? という質問だが、 君は「さらに」、コピーしたらええやん、 と言っている。
- 49 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 11:29:50.94 ]
- その「しかるべき場所」はグローバルか何かで確保されてたり消える心配がないのであれば
そのポインタを渡すだけでいいじゃん
- 50 名前:o mailto:sage [2012/01/15(日) 11:33:02.67 ]
- ところで、そもそも、コピーができるのか?という問題も、ある。
構造体は typedef struct s{ char* field[MaxHeaderNum]; char* attrib[MaxHeaderNum]; }S; ストリームデータがこのようになっているとき、(¥区切り文字) aaaaaaa\bbbbbbbbbb\cccc\dd\eeeeeeeeeee\ ↑ ↑ ↑ ↑ ↑ attrib[1] attrib[2] attrib[3] attrib[4] attrib[5] のポインタが入る。 コピーできるん????? コピーじゃなくて、もう一度strstrあたりできりなおさんとまずくない????? ま、さくっとコピーできるんだったら、謝る
- 51 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 11:35:48.32 ]
- 何を何にコピーすることを言ってるのか?
区切り文字が'\'というのは例として挙げただけ?
- 52 名前:o mailto:sage [2012/01/15(日) 11:38:53.01 ]
- >>49
コーディング規約により、グローバル宣言ができないんですヨ ・局所的にしか利用されず ・他スレッドからの参照に問題あり ・アクセスコントロールに関与する ・マルチスレッド対応の場合 などなど。
- 53 名前:o mailto:sage [2012/01/15(日) 11:39:23.14 ]
- >>51
そ。 \r\n = ¥ としただけ
- 54 名前:デフォルトの名無しさん [2012/01/15(日) 12:12:25.05 ]
- 仕事上のコーディング方法を2chで質問かよwww
- 55 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:26:55.36 ]
- みんなすげーな
オレには何を言いたいのか全然分からん
- 56 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:28:45.50 ]
- 民主党が惨敗した参院選直前の政党支持率(2010年7月11日投票)
FNN 2010年7月4日 民主党 29.9% 自民党 16.3% ttp://sankei.jp.msn.com/politics/policy/100706/plc1007060530003-n1.htm ttp://www.fnn-news.com/archives/yoron/inquiry100705.html マスコミに、ダマされるなよ。
- 57 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:30:22.44 ]
- この子の関わったソフトが載った製品は買いたくないと思ってしまうな
@>何を何にコピーすることを言ってるのか? への回答は? A「しかるべき領域」はスタック上?ヒープ上?それ以外?スタック上ならほぼコピーするしかない B「しかるべき領域」は書き換えてもよい?書き換えたらダメなのであればさらにコピーするしかない
- 58 名前:o mailto:sage [2012/01/15(日) 12:30:27.97 ]
- >>54
チートツールなんだが、なぜに仕事だと思うのかなぁwww
- 59 名前:o mailto:sage [2012/01/15(日) 12:34:36.28 ]
- >>57
>この子の関わったソフトが載った製品は買いたくないと思ってしまうな 売り出されたら驚いちゃうんちゃう? >@>何を何にコピーすることを言ってるのか? への回答は? 機種依存文字はどうかと思うけど。 コピーと言われたから、それを使っただけ。 >A「しかるべき領域」はスタック上?ヒープ上?それ以外?スタック上ならほぼコピーするしかない スタック上。 main関数のスタックに積んでいればOKでしょ? 違うの??? >B「しかるべき領域」は書き換えてもよい?書き換えたらダメなのであればさらにコピーするしかない 書き換えても良いの意味が分からん。 書き換えたらダメってことは、参照もダメってこと??? 意味が不明です。
- 60 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:35:48.48 ]
- >>59
お前が意味不明だな。 手繰るの面倒だからここでもう一度整理して新規に質問しなおせ。
- 61 名前:o mailto:sage [2012/01/15(日) 12:50:30.70 ]
- >>60
君のおかげで整理できたよ。 聞きたい内容は、 呼び出し先の呼び出し先から、大元のスタックにある文字列を直接変更できるか? ってこったな。 孫関数には、ポインタのポインタなら渡せる、と言う条件でな。
- 62 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:52:31.54 ]
- >>61
その質問の答えは、できる、だ。
- 63 名前:o mailto:sage [2012/01/15(日) 12:53:35.05 ]
- 細かい条件を列挙する。
・データはストリームで落とされる。 ・孫関数にはポインタのポインタが渡される ・文字列の長さは不定長 ・区切り文字がある文字列 ・ストリームは、孫関数で処理される この条件で親のスタックに詰まれた文字列を孫から操作できるかどうか? んだな。
- 64 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 12:54:05.71 ]
- ちゃんと質問できるようになるまで何年もかかりそうだな
義務教育の間何やってたんだか
- 65 名前:o mailto:sage [2012/01/15(日) 12:55:10.92 ]
- おっと。
追加があった ・データはストリームで落とされる。 ・孫関数にはポインタのポインタが渡される ・文字列の長さは不定長 ・区切り文字がある文字列 ・ストリームは、孫関数で処理される ・staticは使えない
- 66 名前:o mailto:sage [2012/01/15(日) 12:56:52.04 ]
- >>64
まあ、そんなことより、 >>52が仕事上のタスクだと思う方が驚きだけど。 指示されないと何もできないんかなぁ。 もしくは何でもグローバル宣言すりゃいいと思っているのかなぁ。 普通に個人のコーディング規約に含まれる常識的な内容だと思っていたんだが、これも違うのか?
- 67 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:00:25.15 ]
- >>66
>>65 を読む限りお前の考えたものではないだろうし バカみたいな社内用語?で伝わると思ってるのがおかしい
- 68 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:00:50.73 ]
- >>65
わけのわからない条件は関係なく、元のスタック上の文字列のポインタが わかるなら当然できるだろ。 なんでできないとか思うんだろ。 ちなみに、スタックとかストリームとか、Cには関係ないから。
- 69 名前:o mailto:sage [2012/01/15(日) 13:12:04.29 ]
- >>68
ストリームデータは軽く64kを超えるんだが、 mainで char streamData[131072] とか宣言しちゃうの? スマートじゃない気がするけどw 後々func1がスレッドで動くようになるんだし、mainがdllmainになるんだが、 どう見てもそりゃスマートとは言いがたいと思うんだけど、どうだろうか?
- 70 名前:o mailto:sage [2012/01/15(日) 13:13:45.46 ]
- >>67
こちとら、素人だし、 チートツールの作成を企業が許可するとも思えんし、 >普通に個人のコーディング規約に含まれる常識的な内容 だと思うんだけど、違うのか?
- 71 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:16:07.60 ]
- 整理して質問しろと言っただろ。
> 呼び出し先の呼び出し先から、大元のスタックにある文字列を直接変更できるか? できる。 もう一度だけチャンスをやる。 整理して1レスで質問しろ。
- 72 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:16:59.99 ]
- >>61できたよcodepad.org/Q33HWUEa
- 73 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:18:36.84 ]
- >>70
チートツール作るなんてことを言ってるバカに協力しねーよ
- 74 名前:o mailto:sage [2012/01/15(日) 13:19:03.47 ]
- >>71
>できる。 こういうことだろ? >>69
- 75 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:20:06.56 ]
- どういうことだよ。
お前、頭腐ってるわ。
- 76 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:21:02.62 ]
- o君の考えるスタックとは何を指しているのかね?
- 77 名前:o mailto:sage [2012/01/15(日) 13:21:07.96 ]
- >>72
f2を実行しないと、str[]の大きさが分からないんだけど、それでも大丈夫ってこと? 少なくとも512byteは確実に超えるんだけど。
- 78 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:22:09.28 ]
- ここまで日本語が通じないのも珍しいな。
いや、そうでもないか。
- 79 名前:o mailto:sage [2012/01/15(日) 13:22:30.21 ]
- >>75
>>69以外に方法があるなら、丁重に謝るよ。
- 80 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:24:14.16 ]
- >>79
お前の思い込みなんて人にはわからないんだよ。 だからお前のことを何も知らない普通の人間にわかるように整理して 1レスにまとめて質問してみろよ。
- 81 名前:o mailto:sage [2012/01/15(日) 13:24:59.66 ]
- >>76
関数が呼び出されたことにより確保される、SP、ReturnAddressと自動変数のかまたり
- 82 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:26:10.30 ]
- スタックのサイズが心配ならスタックを拡張するなりヒープを使うなり
すればいいだけだろ。
- 83 名前:o mailto:sage [2012/01/15(日) 13:27:07.83 ]
- >>80
あいよ。 聞きたい内容は、 呼び出し先の呼び出し先から、大元のスタックにある文字列を直接変更できるか? 条件は次の通り ・データはストリームで落とされる。 ・孫関数にはポインタのポインタが渡される ・文字列の長さは不定長 ・区切り文字がある文字列 ・ストリームは、孫関数で処理される ・staticは使えない
- 84 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:28:38.77 ]
- だから、ストリームて何だよ。
思い込みハゲしいなまったく。
- 85 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:29:17.88 ]
- 文字列を直接変更できるかどうかに長さや区切り文字は関係ないだろ。
- 86 名前:o mailto:sage [2012/01/15(日) 13:31:05.93 ]
- >>84
不定長のデータ、でよいよ。
- 87 名前:o mailto:sage [2012/01/15(日) 13:32:15.62 ]
- >>85
>>72のコードで、512byteのデータをどうやって変更するの?
- 88 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:33:29.91 ]
- またか。
その512byteのデータと>>72がどう関係するんだよ。
- 89 名前:o mailto:sage [2012/01/15(日) 13:36:36.09 ]
- >>88
void f2(char* str){ str[500]='\r'; str[501]='\n'; } ができるんだったら、何も言わんよ
- 90 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:37:19.50 ]
- >>89
じゃぁ何も言うな。
- 91 名前:o mailto:sage [2012/01/15(日) 13:38:41.03 ]
- ああ、
void f2(char* str){ str[131070]='\r'; str[131071]='\n'; } ができるんだったら何も言わんよwww
- 92 名前:o mailto:sage [2012/01/15(日) 13:38:58.70 ]
- >>90
エラーが出るんですけどwww
- 93 名前:o mailto:sage [2012/01/15(日) 13:40:11.55 ]
- そりゃそうだわな。
str[10] と宣言しているのに、 str[131070]にアクセスしているんだもんね。 >>90は、そんなことも分からないの?
- 94 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:42:43.17 ]
- 何も言うなと言ってるだろ。
- 95 名前:o mailto:sage [2012/01/15(日) 13:47:33.40 ]
- >>94
君は、回答する前に、こっちを読んで勉強した方が良いと思うよ。 www.kumei.ne.jp/c_lang/intro/no_07.htm 宣言した数より大きな領域にアクセスさせるのは危険だよ。 書き込みなんかしたら、スタック壊しちゃうからね。 気をつけたほうが良いよ。
- 96 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:48:48.34 ]
- また、えらく拗らせちゃってるんだね。
スタックのサイズが心配なら512KBをヒープに確保してそれを渡せばいいだけだろ。 まわりの人も大変だろうな。
- 97 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:49:32.86 ]
- 無能な働き者ってこの質問主の様な奴の事なんだろうな。
- 98 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:50:59.22 ]
- >>95
>宣言した数より大きな領域にアクセスさせるのは危険だよ。 常識で分かることは言う必要がない。
- 99 名前:デフォルトの名無しさん [2012/01/15(日) 13:53:40.36 ]
- 無能な働き者。これは処刑するしかない。
- 100 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:56:50.88 ]
- ちょっとよくわからないのが
大元がmainだとして 「大元のスタックにある文字列」って >mainで >char streamData[131072] 以外にどうやって定義するの?
- 101 名前:o mailto:sage [2012/01/15(日) 13:56:56.89 ]
- >>96
ヒープに確保する方法は否定していないよ。
- 102 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 13:59:35.77 ]
- >>100
質問もできないくらいのレベルなんだから察してやれ。
- 103 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:00:57.52 ]
- >>100
allocaで確保するとかw
- 104 名前:o mailto:sage [2012/01/15(日) 14:04:12.54 ]
- >>103
良いね!
- 105 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:07:11.53 ]
- どこまでアホ?
alloca使ったところでスタックは拡張されない。 って、まぁ釣りだろうけどw
- 106 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:07:51.54 ]
- >>95
ストリームとやらの範囲内ならいくらでもアクセスできるでしょ。 例は10だったけど、そのストリームはもっと大きいんでしょ
- 107 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:08:49.44 ]
- >>104
allocaってスタックだよ。 ってかヒープを避ける理由がわからない。
- 108 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:10:33.82 ]
- char streamData[131072]
でも char *streamData = (char*)alloca(131072); でもいいけど、 結局>>72で問題なくね? allocaってのは初めて知ったわ
- 109 名前:o mailto:sage [2012/01/15(日) 14:12:26.25 ]
- >>107
直近の問題は、何時freeするのかが不定なことだけど、 本質的には、スレッドで動かしたいから、別スレッドからのアクセスをさせないために自動変数での処理をさせたい と言うのが本音。
- 110 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:13:45.65 ]
- スタックはスレッドで共通だが。
- 111 名前:o mailto:sage [2012/01/15(日) 14:14:14.13 ]
- >>108
どこからスレッドとして走らせるかだけど、 スレッドが100走ると末恐ろしい
- 112 名前:o mailto:sage [2012/01/15(日) 14:14:31.03 ]
- >>110
なの????
- 113 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:14:33.82 ]
- 別スレッドからのアクセス性についてな。
- 114 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:16:58.71 ]
- その点ではヒープもスタックも同じ。
普通、mallocもfreeもスレッドセーフだろ。
- 115 名前:o mailto:sage [2012/01/15(日) 14:17:20.97 ]
- >>113
だったら、ストリームデータを、他のスレッドが書き換えるって事が可能というか、 別のスレッドがストリームデータを壊すんだよね。 それじゃ、NGじゃね?
- 116 名前:o mailto:sage [2012/01/15(日) 14:17:48.14 ]
- >>114
だから、自動変数で、と・・・・
- 117 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:18:24.71 ]
- 最初に立ち戻るんだけど、ストリームは別スレッドから変更されうるんじゃないのかって気がするんだけど。
もしそうならポインタ保持じゃだめだけど、それは大丈夫? で、そのストリームが読み取り専用じゃないかつ、デリミタのような0バイトよりも大きな文字列があるのなら、strtokの要領で対応できないか?
- 118 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:18:55.57 ]
- >>116
自動変数=スタックと仮定すると>>114だと言ってるだろ。
- 119 名前:o mailto:sage [2012/01/15(日) 14:19:40.12 ]
- >>114
すまん、間違えた。 ヒープでもスレッドセーフなのか? ちょいと調べてみる
- 120 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:20:01.08 ]
- >>115
ポインタの先が別スレッドが確保したスタック領域ならそこを壊す。 つか、それはバグと言うんだがな。
- 121 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:20:52.74 ]
- >>119
お前はスレッドセーフという単語を理解してないに3億ペリカ。 いや、スレッドも理解してないに10億カノッサ。
- 122 名前:デフォルトの名無しさん mailto:sage [2012/01/15(日) 14:21:39.04 ]
- 「ヒープでもスレッドセーフなのか?」
これなんぞ。 根本的な知識が圧倒的に足りないといわざるを得ない。 チートツールの前に初心者としてまっとうに勉強しなさいな。
|

|