[過去ログ] C++相談室 part164 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
489: (ワッチョイ 847c-zIhc) 2023/07/15(土)22:07 ID:BdK15TwX0(1) AAS
"HogehogeData"という名前で定義されたプログラム上の存在があったら
その複数形はHogehogeDatasと呼ぶしかない
気持ち悪くてもしょうがないんだよ
490: (オイコラミネオ MM71-9/0y) 2023/07/15(土)22:15 ID:UiYhW/dJM(8/8) AAS
ファーストクラスコレクションにしないならその実装は不要だ
基本的に存在意味がない
491: はちみつ餃子◆8X2XSCHEME (ワッチョイ 163e-MI76) 2023/07/15(土)22:20 ID:oCSaktaG0(3/3) AAS
ワイはプログラミング言語 Scheme を使ってるんやが Scheme の仕様には datum という語が出てくる。
シリアライズの単位に関する概念なのでリストひとつも datum と (つまり単数形で) 呼ばれるのが
ちょっとモニョッとする。
492: (JP 0H8a-PPvg) 2023/07/16(日)08:28 ID:PzNRrLhAH(1) AAS
どうでもいいことを突っ込んでる人いますけど
Datas=>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Data=>aaaaaaaaaaaaaaaa
と置換してください
493: (アウアウウー Sa3a-ZX0e) 2023/07/16(日)09:51 ID:Po24/3Vva(1) AAS
hogehogetoyukainanakamatati
で解決
494: (ワッチョイ 3279-EJzg) 2023/07/16(日)16:16 ID:z7qY/utw0(1/3) AAS
powershellはJSONやxmlをその構造のまま扱えたりオブジェクト(PSCustomObject)にも変換できてpythonなんかより小奇麗に書けますよっと
>>478だとif ($a.tsaro.age -eq $a.hanako.age) { ... という具合
495: (ワッチョイ 3279-EJzg) 2023/07/16(日)16:20 ID:z7qY/utw0(2/3) AAS
powershellはC#とシームレスに連携する手段もあってpowershellで苦手な再帰処理とかをC#コードに逃がしてpowershell機能を使いたい部分はActionやFuncから呼び出す事もできますよっと
496: (ワッチョイ 3279-EJzg) 2023/07/16(日)16:21 ID:z7qY/utw0(3/3) AAS
よく見たらここC++スレだね
俺の事は忘れてください
497
(2): (ワッチョイ 0928-rP6O) 2023/07/17(月)18:33 ID:mG7BHGLy0(1/5) AAS
質問なのですがclass Datasというクラスがあってstd:::vector<Datas> vec((size_t)100); であるときに
vec[k]の場所にn個の場所を空けたい(値は初期化済Datasオブジェクトなら何でも良い)場合どう書くべき?
やっぱ手動でsz = vec.size(); vec.resize(sz + n);して既存要素vec[k..sz-1]を後ろ(vec[k+n..])にコピーする --- (1)
のが最速?

仮にstd::vector<T>::insertを使うと
 Datas x;   // (A)
 vec.insert(std::next(vec.begin(), k), n, x); // (B)
省3
498: はちみつ餃子◆8X2XSCHEME (ワッチョイ 163e-MI76) 2023/07/17(月)20:23 ID:YifLUjyU0(1) AAS
>>497
resize だって再配置 (に付随するコピー) の可能性はあるんで
どっちでも大差ないんじゃないかな。
楽だと思うほうで書けばいいと思うよ。
499: (ワッチョイ 915f-9/0y) 2023/07/17(月)21:47 ID:I9Lq0d6Q0(1) AAS
>>497
無駄なデフォルトコンストラクタやコピーを削って極力ムーブで済ませようと思ったら
sz, k, n の大小関係ごとに場合分けして move_iterator 経由の insert とか使い分ければ
いけそうだけど、面倒なわりに見合うほど効率改善しそうな気はしない。
500: (ワッチョイ 82f0-rqn1) 2023/07/17(月)22:08 ID:kACYNrgv0(1/2) AAS
書き込みはそこまで遅くないから労力に見合わないだろうね
501: (スッップ Sd94-v8RM) 2023/07/17(月)22:54 ID:vqJJKRdWd(1) AAS
速度を気にするなら実測しないと始まらないよ。
502
(3): (ワッチョイ ae7a-CYkg) 2023/07/17(月)23:18 ID:vGotTgNV0(1) AAS
リアルタイムOSのタスクのように無限ループが前提のとき

TASK Task1() {
while(1) {
Obj1 obj = Device::GetObj();
:
:
}
省3
503: (ワッチョイ df01-L4gQ) 2023/07/17(月)23:25 ID:CT+u9aWW0(1) AAS
>>502
自作でないクラスのメソッドは使う前には
メソッドが消費するメモリを見積もらなければなりません
不条理でも何でも無い
504: (ワッチョイ 0928-rP6O) 2023/07/17(月)23:34 ID:mG7BHGLy0(2/5) AAS
わかりました
505: (ワッチョイ 82f0-rqn1) 2023/07/17(月)23:42 ID:kACYNrgv0(2/2) AAS
自作でないクラスでも使う関数がメモリ動的確保するかどうか普通は確認するぞ
506
(2): (ワッチョイ 0928-rP6O) 2023/07/17(月)23:46 ID:mG7BHGLy0(3/5) AAS
>>502
>GetObjが内部でnewされていると、この作りではいつかメモリ不足になってしまいます。
この懸念は普通の作りなら基本的に無用。基本的に問題無い

(1) Obj1という型がポインタやハンドルではなくクラスの場合:
objはwhile(1) { }のブロックの中で構築されるので
ループの終わりでデストラクタが呼ばれる(破棄される)から、
Device::GetObj()が真っ当な作りならnewしたポインタをObj1のインスタンスobjに引き渡し、
省5
507: (ワッチョイ 0928-rP6O) 2023/07/17(月)23:47 ID:mG7BHGLy0(4/5) AAS
基本的に、というのは(2)のケースで例外が生じたときクローズされずに抜けてしまう危険性があるのと、
(1)のケースにおいてもobj1の構築中に例外が生じた場合はきちんとデストラクトされない危険性がある。
Obj1のメンバがnewされるべき生ポインタの場合はこれは対処不能。生ポはやめてスマポにすればおk

詳しい話ははちみつ餃子氏に聞くと良い(マテ
508: (ワッチョイ 0928-rP6O) 2023/07/17(月)23:58 ID:mG7BHGLy0(5/5) AAS
訂正orz、
誤: ループの終わりでデストラクタが呼ばれる(破棄される)から、(>>506
正: ループが次の繰り返しに入る前かループを抜ける際にデストラクタが呼ばれる(破棄される)から
509: (ワッチョイ 847c-8c0A) 2023/07/18(火)00:04 ID:yoLqrsJ/0(1) AAS
>>502
必要ならそのGetObj()とやらのドキュメントにDevice::ReleaseXyz()とかDevice::ReleaseObj(obj1)とかobj1.release()とかを後で呼ぶように指示されてるはず
それを怠ってリークさせたならお前がタコ
そういう指示がないくせに勝手にリークするならそのライブラリがタコ
そんだけの話
510: はちみつ餃子◆8X2XSCHEME (ワッチョイ 163e-MI76) 2023/07/18(火)00:16 ID://OyAtPF0(1/2) AAS
そして使い方がドキュメント化されてないなら組織として問題がある。
が、そういう話はマ板で。
511
(1): 502 (ワッチョイ ae7a-CYkg) 2023/07/18(火)00:38 ID:ibbV/iYr0(1) AAS
皆さんありがとう。
>>506
ブロックスコープは知りつつも、ループのブロックの場合はループ中は寿命が継続すると思っていました。
ループ時に毎度後始末されるなら安心です。
512: はちみつ餃子◆8X2XSCHEME (ワッチョイ 163e-MI76) 2023/07/18(火)01:05 ID://OyAtPF0(2/2) AAS
>>511
根拠。
外部リンク[auto]:timsong-cpp.github.io
513: (ワッチョイ 3279-EJzg) 2023/07/18(火)02:17 ID:BpIlHiPB0(1) AAS
組み込み用途のライブラリで毎回ループ終端でデストラクタが呼ばれるように普通は設計しないから大丈夫
疑わしいならベンダーに問い合わせるかライブラリのソースを読めば解決
514
(3): (ワッチョイ b632-bpoS) 2023/07/21(金)16:52 ID:PleiVI860(1) AAS
ちょいとコイツを見て欲しい。MSVC 14.36.32532でC++17かつセキュリティチェック無効(/GS-)

画像リンク[png]:i.imgur.com

最小コードで再現するために、コマンドライン文字列を変な形式として扱ってるのは置いといて
変数rSizeが、引数argcのスタック領域(ebp+8)に割り当てられるんだけど、こんな最適化ある?
確かにargcは用済みだが、レジスタやローカルスタックではなくcdeclのconst引数にストアする?
515: (ワッチョイ 5cfb-MzNP) 2023/07/21(金)16:56 ID:LKM5BaGE0(1) AAS
そんなことよりbooost向けの技術書について教えてくれ
516: 蟻人間◆T6xkBnTXz7B0 (スフッ Sd94-5KMR) 2023/07/21(金)18:04 ID:GfD0zzOHd(1) AAS
そんな最適化あるよ。長期に渡って解析やってたらときどき出くわすよ。
517: (ワッチョイ 82f0-rqn1) 2023/07/21(金)18:26 ID:eD9pKuA20(1) AAS
ADLについて初めて知ったのがboost::mathだった懐かしい
518: (ワッチョイ 847c-8c0A) 2023/07/21(金)20:33 ID:9+qEAU5C0(1) AAS
観測可能な範囲で規格通りの挙動をする限りは、コンパイラ様はどんなバイナリを吐こうとどんな風にメモリやレジスタを扱おうと自由なのだ
519
(2): (ワッチョイ a728-Nt2/) 2023/07/22(土)11:54 ID:1sMnnOgP0(1/5) AAS
if文の条件式のところにがっつり文が書かれてゐる
最後の式の値が結果、とかますますPerl的世界に……
そのうち値を返す関数もreturn書かなくて良くなったりして……
520: (ワッチョイ 473e-8suU) 2023/07/22(土)12:15 ID:QLIAp4G50(1/3) AAS
>>519
任意の文を書けるわけではなく単純宣言に限られる。
521: (ワッチョイ 0710-XcQ/) 2023/07/22(土)13:25 ID:uVFJqD+w0(1/2) AAS
うん。なんか「見てくれ」とか言うから見たけどサンプルとしてもしょーもないコードだなと思って
一度コメントしかけてやめた
windowsのxx仕様 独自mainとか
522: (ワッチョイ 0710-XcQ/) 2023/07/22(土)13:27 ID:uVFJqD+w0(2/2) AAS
自分が本当に答えを知りたいんじゃなくて、フレームというか、言い争いを起こして面白がりたいのかな、とか
523: (ワッチョイ a728-Nt2/) 2023/07/22(土)15:21 ID:1sMnnOgP0(2/5) AAS
やっぱ
void foo() {
 for (int i = 0; i < 100; i++) { .... }
 for (int ii = 0; ii < 100; ii++) { ... }
 ...
 for (int iiiiiiiiiiiiiiiiiiii = 0; iiiiiiiiiiiiiiiiiiii < 100; iiiiiiiiiiiiiiiiiiii++) { ... }
}
省6
524
(2): (ワッチョイ a728-Nt2/) 2023/07/22(土)15:31 ID:1sMnnOgP0(3/5) AAS
ていうか補足、
void bar(int& x);
というのがあって
for (int i = 0; i < 100; i++) { bar(i); }
for (int ii = 0; ii < 100; ii++) { bar(ii); }
for (int iiiiiiiiiiiiiiiiiiii = 0; iiiiiiiiiiiiiiiiiiii < 100; ii++) { bar(iiiiiiiiiiiiiiiiiiii); }
だった場合はこれは明示的にループ変数のアドレスをとっているわけではないが、
省3
525
(1): (ワッチョイ a728-Nt2/) 2023/07/22(土)15:33 ID:1sMnnOgP0(4/5) AAS
しかしわからんのは
void bar(const int& x); // const !
だった場合は
for (int i = 0; i < 100; i++) { bar(i); }
for (int ii = 0; ii < 100; ii++) { bar(ii); }
for (int iiiiiiiiiiiiiiiiiiii = 0; iiiiiiiiiiiiiiiiiiii < 100; ii++) { bar(iiiiiiiiiiiiiiiiiiii); }
だった場合はi、ii、...、iiiiiiiiiiiiiiiiiiが同じアドレスに割り当てられ得るのかどうかわわからん……
526: (ワッチョイ a728-Nt2/) 2023/07/22(土)15:41 ID:1sMnnOgP0(5/5) AAS
ゴメ自己解決しますたorz
527
(1): (ワッチョイ 5f32-vVS+) 2023/07/22(土)17:02 ID:lBkog51W0(1) AAS
スコープを抜けたローカル変数であれば順当な割り当てに思えるのだけど
>>514が差し支えるのはコードインジェクションで引数を使い回すとかの横着
さりとてトップレベルのconstやvolatileは関数シグネチャに現れない訳で
cdeclであろうと引数の寿命は関数を抜けるまでだろうから極めて妥当なのか?

14.27.29110ではやらず、スタック量は逆に増え…増えたから節約してるのか
rbp+なら…いやそれも引数用スタック。C++20でvolatile非推奨化は有ったが
volatile引数への代入も引数スタックへの書き込みと思っちゃならんのかな
528
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 473e-pcwf) 2023/07/22(土)18:07 ID:QLIAp4G50(2/3) AAS
>>527
言いたいことがあるなら独り言を書くんじゃなくて説明しろ。
529
(1): (ワッチョイ bf42-vVS+) 2023/07/22(土)18:59 ID:h3Z+iL0O0(1) AAS
>>528
どの部分ですか?rbp+のくだりならx64であればシャドウストアを呼び出し元が確保する事になっているので
引数へ代入以外でもrbp+に書き込まれるが、それにしたって引数の退避以外で行われるかという意味だけど

またこの最適化が適正だとすれば引数へconstを指定しても
それは引数の格納元が書き換わらない事を意味しない訳で
volatileにしても引数スタックと同一視は出来ないのかなと
530: (テテンテンテン MM8f-TfYz) 2023/07/22(土)19:01 ID:gun3EJ7PM(1) AAS
>>519
resultは欲しいね。
531: (ワッチョイ 875f-UuLb) 2023/07/22(土)19:08 ID:nQhdUCcc0(1) AAS
とりあえずcallee-savedとcaller-savedあたりでググってこい
532: (ワッチョイ 473e-8suU) 2023/07/22(土)19:21 ID:QLIAp4G50(3/3) AAS
>>529
技術的な意味合いじゃなくてね、
それをのべてどうしたいのってことだよ。
疑問なのか?主張なのか?感想なのか?
533
(1): (ワッチョイ bf79-mRrB) 2023/07/22(土)23:38 ID:a8PwsTyx0(1) AAS
これだけは言っておく
文章が下手糞はプログラミングも下手糞ってことだ
534: (ワッチョイ dff0-lmMR) 2023/07/22(土)23:53 ID:31w2/Kbx0(1) AAS
久々にヤバい変数名を見た
>>525
このクソみたいな変数名はおまえが考えたのか
535: はちみつ餃子◆8X2XSCHEME (ワッチョイ 473e-pcwf) 2023/07/23(日)01:23 ID:3Ckw8KVE0(1) AAS
>>533
母語で説明できないようならプログラマには向いてないとかいう意味のことをダイクストラが言ってたな。

普通の人は母語が最も得意なはずだからそれで表現できないのに
プログラミング言語でなら表現できるってことはないのは道理というものだ。
536: (スップ Sd7f-d+yq) 2023/07/23(日)07:00 ID:TPcdF2Bwd(1) AAS
二、三個違えて大域変数切って火に油注ぎたくなるやつ
537: (ワッチョイ dff0-FYg4) 2023/07/24(月)22:04 ID:7/Qlh6bu0(1) AAS
さんざん言われてるけど質問文きちんと書ける人はChatGPTで自己完結しちゃうんだよな
538: (ワッチョイ a728-Nt2/) 2023/07/25(火)00:09 ID:ngER/Udx0(1/2) AAS
ゴメス>>524はリリースビルドしたら全部同じアドレスになったわ;;;
やっぱ握った変数なりオブジェクトなりのアドレスを
その変数なりオブジェクトなりの寿命が尽きた後に
使おうとするのは未定義動作であることだなあ、
539
(1): 2023/07/25(火)03:57 ID:YH2RVZct0(1) AAS
俺には>>524がなんでそんな結論になるのか分からんのだが
for内で i を宣言してるんだからfor のスコープを持つローカル変数だろ?
int が4バイトの前提で言えば for 突入時に int i をスタック上に確保(スタックポインタを4バイトマイナス)して for 離脱時に int i の領域を解放(スタックポインタを4バイトプラス)する
この繰り返しなんだから int i や int ii のアドレスが同じになることに疑問を挟む余地がないと思うんだけど
何がおかしいのか俺にはさっぱり分からん
540
(1): (アウアウウー Sa2b-tGd7) 2023/07/25(火)09:19 ID:k8WJtY+Ua(1/2) AAS
for の i がローカルになったのは最近
グローバルに盛れるコンパイラ環境は巷に溢れていた
541: (アウアウウー Sa2b-tGd7) 2023/07/25(火)09:19 ID:k8WJtY+Ua(2/2) AAS
盛れるじゃなかった
漏れる
542: はちみつ餃子◆8X2XSCHEME (ワッチョイ 473e-pcwf) 2023/07/25(火)11:10 ID:akUn9hsS0(1/6) AAS
>>540
最近っていつ頃のことだ?
543: (ワッチョイ dff0-POqA) 2023/07/25(火)11:32 ID:YIf2r9Dz0(1/5) AAS
#define for if(0) else for
544
(1): (ワッチョイ dff0-POqA) 2023/07/25(火)11:34 ID:YIf2r9Dz0(2/5) AAS
間違えた
#define for if(0) {} else for
これでゾンビiよく消してた
545
(1): (ワッチョイ 0710-PxlL) 2023/07/25(火)12:01 ID:RkQ0FrMx0(1/5) AAS
>>544
ごめん、まじめに教えて
これ何の意図?

これに意味がある具体的なコンパイラって何の何version?
546
(1): (ワッチョイ dff0-POqA) 2023/07/25(火)12:08 ID:YIf2r9Dz0(3/5) AAS
VC++6.0という大昔にデファクトスタンダードだったコンパイラだ
547
(1): (ワッチョイ 0710-PxlL) 2023/07/25(火)12:10 ID:RkQ0FrMx0(2/5) AAS
>>546
ほんとにごめん、何の意味があるの?
548
(1): (ワッチョイ dff0-POqA) 2023/07/25(火)12:12 ID:YIf2r9Dz0(4/5) AAS
例外飛ばすと自動変数の破棄全部ふっ飛ばして戻ってくる酷いポンコツだったな
よくこんなの皆つかってたなというかコレしかなかったからな
549
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 473e-pcwf) 2023/07/25(火)12:13 ID:akUn9hsS0(2/6) AAS
>>545
for の初期化節で変数宣言した場合にその外側のブロックがスコープになるコンパイラが存在し、
その対抗策としてこういうマクロを導入するという方法があったという話だろ。
550: (ワッチョイ dff0-POqA) 2023/07/25(火)12:14 ID:YIf2r9Dz0(5/5) AAS
>>547
意味がわからないなら知らなくていい
当時を知らないなら理解しようとするだけ無駄というもの
551
(1): (ワッチョイ 0710-PxlL) 2023/07/25(火)12:24 ID:RkQ0FrMx0(3/5) AAS
>>549
ありがとう、そしてありがとう

>>548
VC6がポンコツは同意。
あのころMSはディンカムウェアからstd c,c++ ライブラリを買って導入してたけど、そもそもc++の仕様準拠がメチャクチャだったと認識してます
もうVC使わなくなって長いので気にしなくなった
552: (ワッチョイ 0710-PxlL) 2023/07/25(火)12:39 ID:RkQ0FrMx0(4/5) AAS
『for内スコープ』の仕様にvc6は未対応だ、という事実を認識し
責任者がvc6を選択した案件で納品する

なら、その条件に従って書く(つまらないつまづきに繋がる書き方を避ける)のが他者に対して親切な技術者だと思うが

「そういう話はマ板で」か
553: はちみつ餃子◆8X2XSCHEME (ワッチョイ 473e-pcwf) 2023/07/25(火)12:56 ID:akUn9hsS0(3/6) AAS
>>551
言語仕様が改訂されたんだよ。
C++98 が成立するちょっと前まで for 文の外側のブロックをスコープとするルールで正しかった。
ARM (The Annotated C++ Reference Manual) でも旧ルールで説明されている。

VC の出来が悪かったのは事実だと思うが
スコープルールに関しては互換性を是とするウィンドウズの価値観に合わせて
意図的に変更を遅らせたのだと思う。
554: (ワイーワ2 FF9f-fo+T) 2023/07/25(火)14:00 ID:uSv6E5akF(1) AAS
いと懐かしき
555
(1): (ワッチョイ 8702-Jlgx) 2023/07/25(火)14:23 ID:kV+p+cpE0(1) AAS
Visual C++ 6.0がリリースされたのが1998年じゃん
25年前じゃん。全然最近じゃないじゃん
遠い過去のことをつい最近って話すのはやめてほしいね
556: (ワッチョイ a701-Fb4F) 2023/07/25(火)14:31 ID:MikqYz6X0(1/2) AAS
>>555
だまれ小僧! 最近じゃよ
557: (ワッチョイ df32-8suU) 2023/07/25(火)14:44 ID:vokyohz+0(1) AAS
20年くらいまえのソースコードだったら
読む機会がないわけでもないからなぁ。
最近と言えるかどうかはともかくとして
経緯を知っておくに越したことはない
558: (アウアウウー Sa2b-QKap) 2023/07/25(火)14:44 ID:iTChcdyRa(1) AAS
25年前に30代だった人の多いスレ
559: (ラクッペペ MM8f-pwGU) 2023/07/25(火)14:54 ID:218oSqZIM(1) AAS
現役世代なら25年前なら20代
560
(1): (ワッチョイ a701-Fb4F) 2023/07/25(火)14:55 ID:MikqYz6X0(2/2) AAS
だまれ小僧ども!
561: (ワッチョイ dff0-FYg4) 2023/07/25(火)16:16 ID:uXZxGhnB0(1) AAS
おじいちゃんかな入力使ってそう
562: (ワッチョイ 473e-8suU) 2023/07/25(火)16:50 ID:akUn9hsS0(4/6) AAS
リアルで トントカイモ をやったことある世代だわ……
563
(1): (ワッチョイ 0710-PxlL) 2023/07/25(火)20:33 ID:RkQ0FrMx0(5/5) AAS
>>560
そこは
黙れ小僧、お前にSUNが救えるか!
じゃないの?

sunのccって何だっけ

でも個人的にはc++ユーザなら2014年以降の話をして欲しい
564: (ワッチョイ bf79-mRrB) 2023/07/25(火)21:15 ID:2EbZvvbp0(1) AAS
(昔話うぜー)
565: はちみつ餃子◆8X2XSCHEME (ワッチョイ 473e-pcwf) 2023/07/25(火)21:54 ID:akUn9hsS0(5/6) AAS
>>563
古い規格に基づいたコードが消滅しているならそれでもいいけどさ。
566: (ワッチョイ a728-Nt2/) 2023/07/25(火)22:52 ID:ngER/Udx0(2/2) AAS
>>539
アドレスをとったらメモリエリアシング除けで最適化が抑止される
そう思っていた時期が僕にもありました先週
567: はちみつ餃子◆8X2XSCHEME (ワッチョイ 473e-pcwf) 2023/07/25(火)23:10 ID:akUn9hsS0(6/6) AAS
アドレスとエイリアスは別枠なんだわ。
ポインタを数値として表示させると同じなのに == で比較すると偽値 (エイリアスではない) ということがあり得る。
pointer provenance の概念について調べてみると面白いかもね。
568
(1): (ラクッペペ MM8f-pwGU) 2023/07/26(水)07:52 ID:Ymbp6+unM(1) AAS
古いコードに執着しはじめるならもういい加減引退した方がいい
569: はちみつ餃子◆8X2XSCHEME (ワッチョイ 473e-pcwf) 2023/07/26(水)13:05 ID:Z/zSkMd/0(1/3) AAS
>>568
誰かが書き換えなきゃ新しくはならんのだぞ。
1-
あと 433 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.030s