C++相談室 part132

■ このスレッドは過去ログ倉庫に格納されています
2017/10/10(火) 00:11:34.01ID:nc/5PI4P0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part131
http://mevius.2ch.net/test/read.cgi/tech/1501295308/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.101【環境依存OK】
http://mevius.2ch.net/test/read.cgi/tech/1500329247/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/11/08(水) 06:30:19.02ID:pFtekju40
セキュリティソフトを動かしていたら、多くのアプリは、正常に動かない

多くのアプリの説明書に、そう書いてある
2017/11/08(水) 07:29:57.54ID:/yzKqtBG0
>>487 cin.get(); とgetchar() もやってみたけど同じでした

>>488 ウィルスバスターはインストールされているでしょうか?
エラーを出すのがウィルスバスターなので、ウィルスバスターの入っている環境じゃないと出ないようです

>>489 vector使ってみたけど同じでした。今までvectorってあまり使ったことなかったけど、これからはvectorを使うことにしよう
int main()
{
vector< vector<int> > ppa;
ppa.resize(5000);
for (int i = 0; i < 5000; i++ )
ppa[i].resize(20);

cout << "hit any key!" << endl;
char ch = (char)_getch();
return 0;
}

>>490 実際のプログラムでは伸び縮みします

>>491 そうですね、ウィルスバスター側の問題かもしれない。トレンドマイクロに問い合わせしてみようかな?

>>492 ウィルスバスターを終了した状態ではエラーは出ないことは確認しています
ただ、visual studioとウィルスバスターのどちら側に問題があるかは分からないけれども

>>493 そうですね、でもウィルスバスターを止めるわけにもいかないので

とりあえず、プログラムを最後まで実行させなければ問題ないので、IDEから強制終了することで対応しようと思います。
プログラム単体で実行したときはエラーは出ないので
2017/11/08(水) 08:02:44.81ID:pFtekju40
多くのアプリの説明書に、
「セキュリティソフトを動かしていたら、正常に動きません」

って書いてあるけど、何でだろ?
2017/11/08(水) 08:10:49.38ID:MA4CFapNd
多くのアプリがウィルスみたいなものだから
2017/11/08(水) 09:33:37.02ID:tfdQ3Vx70
セキュリティソフトは潜在バグを顕在化する事が往々にしてある
2017/11/08(水) 10:25:00.80ID:s/8N4dfn0
事情は知らんが開発中はウィルスバスター止めるとか>>467の方法で問題あるのか?
IDEから強制終了とかクソ面倒くさいことやってられんだろ
2017/11/08(水) 10:27:07.11ID:pfXJjTar0
OSの設定に干渉するようなモノはウイルス判定されることがあり得るでしょ。
それが善意かどうかなんて判定のしようがない。
2017/11/08(水) 10:29:43.39ID:s/8N4dfn0
もしかしてウイルスを作ってるのか?
501デフォルトの名無しさん (ワッチョイ 4980-VYVV)
垢版 |
2017/11/08(水) 12:29:57.54ID:/2nLdTDi0
>>499
ウイルス判定したならただクラッシュさせて放置じゃなくてアンチウイルスソフトとしての仕事しろよ。
ただウイルスバスターがクソなだけだろ。
2017/11/08(水) 13:26:26.66ID:xvDlz0If0
ウイルスと判定したわけじゃなくて、判定するために干渉した結果としてそうなる場合がある。
コンソールアプリを起動しようとした場合に、一旦サンドボックス的なものの中で起動させてチェックして
直後にあらためて普通に起動するというのを見たことがある。
今回の場合、そのコンソールアプリを起動している VS の状況と噛み合わなくなっているのだと思う。

チェックのために何かしら介入しなきゃならないのはしょうがないのだが、
泥臭い、クソみてぇなことの塊なので、まじめに検証するのアホらしいぞ。
2017/11/08(水) 15:52:55.19ID:8BP79/0I0
>>494
カスペルスキーの環境だと問題ないみたいですぜ。例外とかの設定もしてません。
バスターは入れてないです。
504デフォルトの名無しさん (スプッッ Sd62-3K0w)
垢版 |
2017/11/08(水) 16:01:14.63ID:VRSOCYqCd
いまどきクライアントにはウィルス対策ソフトなんて入れないのが主流だと思ってたけど、
そうでもないのかな
2017/11/08(水) 16:44:23.86ID:XvbXwAqY0
上の現象見ただけでも信用ならんと分かりそうなものだがなあ。
2017/11/08(水) 18:24:45.85ID:pfXJjTar0
Win10ならディフェンダーはいってるけど、前のOSとかなら入れるのか?
2017/11/08(水) 19:40:45.83ID:GPQLPiKHM
>>506
XPの時からディフェンダーだわ
2017/11/08(水) 23:47:31.77ID:NuL34q9d0
ノートンのプロセスが勝手にこっちのdllを読み込んあとおかしな状態でアンロードしてアクセス違反おこしてノートンのプロセスがクラッシュするってのはあった。
アンチデバッキングなのかユーザーモードデバッガではアタッチできないからカーネルデバッガやるしかなくて原因見つけるのに結構苦労した。
509デフォルトの名無しさん (ワッチョイ 5f80-UJrp)
垢版 |
2017/11/09(木) 00:57:17.32ID:ej8qpLZc0
Virtual Studioは素人が購入することは考えにくい専門的なソフトだからウイルスバスターのターゲット外なんだよ。
つまりさっさとどっちか捨てろってこった
510デフォルトの名無しさん (ワッチョイ 5f78-XysI)
垢版 |
2017/11/09(木) 02:17:02.22ID:7vxmA4jM0
Visual Studioでアプリ作っててビルドしたてホヤホヤのプログラムをアヴィラ先生がウィルス認定しやがったのは過去に何度かあったわ
2017/11/09(木) 07:51:39.95ID:AsVSSCPV0
>>456
delete[] ppa;
じゃないの
2017/11/09(木) 08:51:49.76ID:4HUgyouS0
>>498
>>467の方法は、エラーの発生を無視しているだけで、実際にはエラーが発生している可能性があるので

>>500
そんなスキルはないですw

>>503
ウィルスバスター側が悪さしている可能性もあるんですかね
せめてVisual Studioとウィルスバスターのどっちが悪いのかわかればいいんだけど

>511
>>483でdelete[] ppa;にしてみたけど、同じでした
2017/11/09(木) 11:01:44.29ID:Obd3aNBj0
ウィルスバスターはエラー検出ツールじゃないし無視でいいよ
リソース関連のエラー検出したいならそれなりの検出ツール使うとか静的解析ツール使うとか
2017/11/09(木) 12:14:59.98ID:rcuqnank0
ウィルスバスターミナルとかトーシローかよw
プログラムの仕組み知り尽くしていればまずウィルスなんかに引っ掛からないだろw
2017/11/09(木) 12:33:16.70ID:YfcqoN+X0
教えてくれよ
2017/11/09(木) 18:45:17.95ID:+zZRkuiLd
入力したコマンドを別関数に渡して結合してリターンして表示するってコードを作りたい
mainの中のusrとpassは実体もあるから受け渡し含めて問題ないと思うのだけど、
mainのcRetとgetcommandのcommandってどう定義するべきなのだろうか?
動くのは動くのだけど二つとも実体どこー?ってなってます

#include <stdio.h>
#include <stdlib.h>
GetCommand( const char* usr, const char* pass ){
char* command;

/** コマンド作成 **/
sprintf( command, "-u %s:%s", usr, pass );
return command;
}

int main( int argc, char* argv[] ){
char* cRet;
char usr[256] = {};
char pass[256] = {};

/** アカウント名の入力 **/
printf("usr Input : ");
scanf("%s", usr );

/** パスワードの入力 **/
printf("pass Input : ");
scanf("%s", pass );

cRet = GetCommand( usr, pass );
printf( "%s\n", cRet );
return 0;
}
2017/11/09(木) 18:49:41.22ID:lJJATczwd
GetCommand関数のcommand変数をstaticなバッファーにするか、おとなしくstd::stringを使うか、GetCommandにバッファーへのポインターに渡すか。
2017/11/09(木) 18:53:06.50ID:+zZRkuiLd
>>517
このままのリターン形式だとstaticなバッファー作成しか方法ないってことですよね
2017/11/09(木) 18:56:36.56ID:lJJATczwd
>>518
いや、malloc や、newもあり得る。だれが解放するかは問題だが。
2017/11/09(木) 19:22:58.90ID:lJJATczwd
グローバル変数のバッファーを使うこともできる。
2017/11/09(木) 20:43:21.98ID:+zZRkuiLd
考えてみるとバグの温床になりかねんね
単純に格納先の変数を用意して引数に渡すべきだとなった
2017/11/09(木) 21:06:06.24ID:HS5Oh82mM
>>521
C言語ならな
C++なら>>517の言う通りおとなしくstd::string使えよ
2017/11/09(木) 21:22:58.42ID:+zZRkuiLd
>>522
そやね
プロシージャとファンクションの考え方からファンクションにしたいのに
戻り値じゃないってのも変だ
string全然使ったことないけど使うことにする
2017/11/09(木) 22:21:05.91ID:LSUga0nM0
コマンドラインオプションで受渡した方がやりやすいような気もしないでもない。
525デフォルトの名無しさん (ワッチョイ dfcb-2I0o)
垢版 |
2017/11/10(金) 05:13:52.89ID:7MRV7tWB0
こういう内容でstring使わないとか
超のつくマゾプレーだな
526デフォルトの名無しさん (ワッチョイ 5f78-XysI)
垢版 |
2017/11/10(金) 06:24:08.16ID:wxME+cIA0
ってかCの質問やんけ
2017/11/10(金) 06:45:56.53ID:AkYkb8w90
sprintfは領域確保しないでしょ。こういうのがCは危ない。
2017/11/10(金) 07:58:16.79ID:P63PhvFd0
>>513
たしかにウィルスバスターをエラー検出ツールとして使うのは、おかしいですね
>>467の方法でdevenv.exeが置いてあるIDEというフォルダと、自分のプログラムが置いてあるフォルダを
ウィルスバスターの例外処理に入れたら、気持ちが悪いぐらいにまともに動くようになりました

みなさん、ありがとうございました
529デフォルトの名無しさん (ワッチョイ 7f9d-vLjR)
垢版 |
2017/11/11(土) 06:46:03.41ID:PUzdOh0e0
>516
1.間違い1
char* command; /** コマンド作成 **/
sprintf( command, "-u %s:%s", usr, pass );
ここが間違いで、sprintfを使う時には、かならず
char commad[256];
のように適当に多めにエリアを確保すること、256バイト確保しておけばメモリーをはみ出すことはまずない。
上の例ではcommandには何が入っているか不定だから、例えば0が入っていたら、メモリーの0番地に
usr,passを書き込んでしまう。だから普通はsprintを行った後で暴走する。

2.間違い2
char commad[256];
このように変更するとGetCommandは正常に動作するが、このcommandはスタックに確保されたメモリー
なのでGetCommandを終了すると、解放されて不定になる。したがってreturn command;はしては
いけない。

3.正しいやりかた
メモリエリアを確保して、それをGetCommnadに渡すのもありだが、引数が増えるので内部で確保してリターン
したいのであれば、memory確保する関数を用意してそこに書き込む。確保したエリアは使い終わったら
自動的に開放できる仕組みにしておく。
char *command = getarea(256);
2017/11/11(土) 06:58:56.29ID:qx0Cuc+s0
256バイト確保しておけばメモリーをはみ出すことはまずない。とかw
文字列連結してるだけなんだから全部std::stringでやればいいだけだよ
2017/11/11(土) 07:10:37.49ID:5AYGw8xA0
>>516
ていうかc言語初心者のところで聞けよ
その池沼レベルのソースコードだとここでは晒しものの血祭りになるだけだぞ
532デフォルトの名無しさん (ワッチョイ 7f9d-vLjR)
垢版 |
2017/11/11(土) 08:19:33.64ID:PUzdOh0e0
>文字列連結してるだけなんだから全部std::stringでやればいいだけだよ

さてもしかりに
char commad[256000]; このくらい十分に確保できたらstringとどっちがあんぜんだろうか?
先ずはstringを使った方がいいと主張する理由を説明できないとな。
「やればいいだけだよ」って誰かがいってたから、という受け売りの信仰ではだめだな。
2017/11/11(土) 08:23:18.59ID:qQheN6bd0
>>532
それでもstd::stringのが安全
根本的に考え方が古すぎる
2017/11/11(土) 08:40:17.35ID:FtIHrpnF0
>>533
外部からの長さ無制限の文字列を受け付けるプログラムというのもセキュリティー上問題がある
バッファオーバーフローで即exploitされることは無いが時間をかければクラッシュを引き起こせる
というわけで長さ制限はどこかの時点で必須なのでassertionをOFFにしたsprintf_s()さいこー
2017/11/11(土) 08:42:08.74ID:qx0Cuc+s0
>>532
くだらなすぎて返す言葉もないです
すみません
536デフォルトの名無しさん (スップ Sd1f-WrWp)
垢版 |
2017/11/11(土) 08:46:05.02ID:JauW0Lbxd
スタックオーバーフロー起こしそう
2017/11/11(土) 08:58:22.67ID:VdKe4lXM0
>>532
スタックが無駄。
2017/11/11(土) 08:59:35.86ID:FtIHrpnF0
ていうかstd::stringにお任せしておけばデータサイズの管理が不要とか池沼の考え
何文字でも受け付けるとかいうのはテストしようが無いからまともな仕様ではない
よってまともな設計は不可能
2017/11/11(土) 09:01:47.94ID:VdKe4lXM0
常識的な範囲で受け入れてくれればよい。
それを行うことで何をしたいのかが見えないなぁ。
2017/11/11(土) 09:03:17.54ID:FtIHrpnF0
手前の常識がクライアントの常識と思い込むのは池沼のry
2017/11/11(土) 09:06:15.75ID:FtIHrpnF0
つか>>537もかなり問題発言
スタックは関数を抜けたら開放されるのだから、
スタック領域を使い果たさないように設計された関数ならスタックをいくら使うかは関数の勝手
ここでも「スタックの消費は少ないほうが良い」という手前の常識が
2017/11/11(土) 09:06:43.21ID:VdKe4lXM0
じゃあ、君はメモリが確保できないことをどう説明するんだい?
スタック大量に確保したら余計引っかかるぞ。
2017/11/11(土) 09:10:47.99ID:VdKe4lXM0
本質は同じ。瞬間メモリ使用量の問題だからな。
少ない方がイイに決まって無いかい?
2017/11/11(土) 09:17:19.24ID:FtIHrpnF0
>>542
スレッド生成時にそのスレッドが使えるスタックは一般に割り当てが完了するから、
割り当てられた領域をオーバーしなければどう使っても良い
もちろんフルに使ってもヒープの圧迫にはならない

スタックが伸びれば伸びただけヒープ用メモリ領域を圧迫するとか
ごく一部の超ロースペックな組み込み環境(スタックがただ1本だけ=スレッドが1個だけ)限定の話じゃないの;
プログラムのメモリの使い方について一体どんな理解をしているのか;;
2017/11/11(土) 09:22:37.81ID:VdKe4lXM0
>>544
じゃあnewしても問題なく確保できるじゃないか。
クライアントが不足の文字数ブッコンで落ちるよりはいいと思うけどね。
あと、ほかがヒープ食っててスタック確保できないケースはないの?
なんでもヒープにキックする人嫌い。
2017/11/11(土) 09:23:01.72ID:FtIHrpnF0
>>543
std::string経由でヒープ上にchar commad[256000];を確保する方が
スタック上にchar commad[256000];を確保するより常に優れた設計であるという根拠は?
2017/11/11(土) 09:25:34.33ID:VdKe4lXM0
>>546
仕様が提示されてないから。250kbも使う保証がない。
なら、std::stringがchar command[256000]と確保するのは優れてるの?
折衷案なだけじゃない?
2017/11/11(土) 09:26:29.15ID:FtIHrpnF0
>>545
藻前は文字数ブッコンでエラーを返すことと文字数ブッコンで落ちることの意味の違いの重大さがわかっていない
漏れは終始エラーを返すことを目指した発言をしてゐる
2017/11/11(土) 09:27:27.12ID:VdKe4lXM0
>>548
あそー。
確保できなかたらSIZEは0になるから、ほとんどの処理は通らないようにエラー処理はできる。
2017/11/11(土) 09:29:57.09ID:VdKe4lXM0
c++には例外もアルヨ。
2017/11/11(土) 09:40:15.26ID:VdKe4lXM0
化石か!
2017/11/11(土) 09:42:44.46ID:FtIHrpnF0
>>547
なんか文字数の上限仕様が提示されたらスタック上に取るほうが良いと言ってねえが?まあ一般にそれで良いのだけども

>>549
メモリ不足チェックと文字数チェックを混同するのは池沼のry
メモリ不足はさまざまな要因が重なった結果起きる現象なので
「入力Xを与えたらメモリ不足でクラッシュする」という仕様はありえない
(入力とメモリ不足との関係は、一般に再現性のある形ではテスト仕様に組み込めない

一方、「文字数n未満の入力Xはエラーとする」という仕様ならアリで
再現性のあるテストケースも書けてバッファとしてとるべき配列サイズも計算できる(きちんと設計しているなら
2017/11/11(土) 09:44:02.22ID:FtIHrpnF0
>>552訂正スマンorz
誤: 文字数n未満の入力Xはエラーとする
正: 文字数nを超過した入力Xはエラーとする
2017/11/11(土) 09:46:24.25ID:VdKe4lXM0
>>552
ロースペックじゃないコンピュータつかってるんだろ?
非常識な文字数入れられたらはじくなんて別に難しくないだろ。
スペックわかってるんだったらなおさら。
555デフォルトの名無しさん (ワッチョイ 5f7f-zl2n)
垢版 |
2017/11/11(土) 09:47:59.39ID:atpFEB620
スタックに充分な領域を確保したから大丈夫って頭おかしい設計だわ
2017/11/11(土) 09:49:50.67ID:FtIHrpnF0
>>554
文字数チェック不要と考えているかもしれない>>530とかに言うべき
2017/11/11(土) 09:54:01.12ID:VdKe4lXM0
はいはい。もういいわ。
エラー処理真面目にやるんだったら、そういう方向で考えるけど。
ここではそんなに求められてない。一般感覚が無いとそれ何回もやるのか?

不適当で有名な5chでなにを演説してるのやら。
2017/11/11(土) 09:58:28.19ID:FtIHrpnF0
>>555
やみくもにスタック消費量最小を目指すのは、
自分の関数がどれぐらいスタック使うのかおよびスタック領域にどれぐらい余裕があるのか
見積もる手間を惜しんで手抜きしているだけな可能性が微レ存、

ていうか「スタックに充分な領域を確保した」というのが真なら(机上検証、レビュー、テストで担保できたなら
「大丈夫」という結論で何の問題も無いんじゃ…
2017/11/11(土) 10:07:34.21ID:WEOLmGSE0
>>544
スタック領域には当然上限があるが、常にその上限まで割り当てていたら無駄だろう。
LinuxもWindowsも必要に応じてページを割り当てる。
2017/11/11(土) 10:17:10.01ID:FtIHrpnF0
>>559
スタック領域を使い切るのが美徳とは言っていないわけでありまして、
なおかつページングの発生頻度は、メモリ消費箇所がスタックかヒープかの違いよりは
領域へのアクセス頻度の問題ではなかろうかと、
2017/11/11(土) 10:35:02.95ID:WEOLmGSE0
パフォーマンスの話じゃなくて、これが一般には正しくないって言ってるの。

>スレッド生成時にそのスレッドが使えるスタックは一般に割り当てが完了するから、
>割り当てられた領域をオーバーしなければどう使っても良い
>もちろんフルに使ってもヒープの圧迫にはならない
562デフォルトの名無しさん (ワッチョイ 5f78-XysI)
垢版 |
2017/11/11(土) 10:53:30.83ID:opm7+oFX0
んでchar commad[256000];をどうやってリターンするんだ?
2017/11/11(土) 11:07:32.64ID:WYLE0xS1M
普通ならstd::string使う
char使いたい人は使えばいい
おしまい
2017/11/11(土) 11:11:42.29ID:d7ebwqzc0
256000という数字にセンスを感じるなあ
2017/11/11(土) 11:50:48.17ID:yWjpohs20
> char commad[256000];
しかも0が非ascii
566デフォルトの名無しさん (ワッチョイ 5f9f-zl2n)
垢版 |
2017/11/11(土) 13:26:05.59ID:cTWJmMx00
>>529
いや、commandを何バイト確保しておこうが snprintf() の方を使った方が良い。
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/sprintf.3.html
gcc で asprintf() 使ってもいいなら command は char * でも行ける(その代わり後でfree())。
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/asprintf.3.html
2017/11/11(土) 14:07:40.16ID:x64hpPPQ0
scanf("%s"にツッコミなし!
2017/11/11(土) 14:52:43.33ID:cTWJmMx00
>>567
あまりに低レベルで目に入らんかったw
569デフォルトの名無しさん (ワッチョイ 7f9d-vLjR)
垢版 |
2017/11/11(土) 17:48:20.77ID:PUzdOh0e0
>んでchar commad[256000];をどうやってリターンするんだ?

だからそれはstringでも同じだな。stringを使えばいいという発想では駄目ということだ。
メモリを確保する必要がある。
しかも、サブルーチンを抜けた後で、何処かでそれを解放する機構が必要だ。サブルーチンを抜けた
後だと自動で解放しない限りは解放する方法はない。つまり肝心なのは自動でメモリ解放機能が
ついていることだ。それがついてないstringクラスなんてこの場合は全く使い道がないってことだ。
だからstringって馬鹿の一つ覚えを言うやつは間違いってことだね。
2017/11/11(土) 18:01:59.33ID:qx0Cuc+s0
頭おかしい
2017/11/11(土) 18:12:16.05ID:NuT5AKLg0
なんかおかしな雰囲気を出してるね
2017/11/11(土) 18:18:07.19ID:ybMjRTfR0
>>569 std::string はデストラクタで自動でメモリ解放するよ。
2017/11/11(土) 18:20:22.00ID:tT1WP+x8r
auto f() {
 struct { char a[256]; } r{};
 return r;
}
int main (){ auto[array] = f(); }
ちょっとスタックが厳しそうだ
574デフォルトの名無しさん (ワッチョイ 5f80-UJrp)
垢版 |
2017/11/11(土) 18:43:22.06ID:35XI65Ti0
>>569
本当のバカはその一つすらまともに知りませんでした
2017/11/11(土) 19:32:54.25ID:a9mrqTdG0
今どきstd::stringを批判してcharの配列の優位性を説くとか
576デフォルトの名無しさん (ワッチョイ dfcc-TYjb)
垢版 |
2017/11/11(土) 19:56:58.42ID:Hv/PaJUT0
string_viewとか持ち出して言うならともかく
577デフォルトの名無しさん (ワッチョイ 5f80-UJrp)
垢版 |
2017/11/11(土) 20:40:48.77ID:35XI65Ti0
>>575
全く批判になってないから。

string_viewも今回のような用途に使うもんじゃない
2017/11/11(土) 21:23:35.64ID:u9h6IsulM
テンプレートって基本ヘッダファイルに書くと思うけど、コンパイル単位ごとに全部コードのコピーが作成されるの?
579デフォルトの名無しさん (ワッチョイ dfcc-TYjb)
垢版 |
2017/11/11(土) 21:25:00.09ID:Hv/PaJUT0
>>577
string_viewって何か知らないのか?
580デフォルトの名無しさん (ワッチョイ 5fb3-ouqv)
垢版 |
2017/11/11(土) 21:41:30.08ID:4HyMUlDc0
そこでmoveですよ。
2017/11/11(土) 21:45:04.19ID:ybMjRTfR0
>>578
規格は生成コードまで規定しないから、気になるならアセンブリとか見るのがいい。
関数テンプレートあたりだとコンパイル単位またいでも同じポインタが得られることが要求されていたりはする。
582デフォルトの名無しさん (ワッチョイ 5f80-UJrp)
垢版 |
2017/11/11(土) 22:32:22.44ID:35XI65Ti0
>>579
今回の件にstring_view使ってみなよ
583デフォルトの名無しさん (ワッチョイ 5f80-UJrp)
垢版 |
2017/11/11(土) 22:37:09.49ID:35XI65Ti0
もしかして
string_viewとか(無理やり)持ち出して(バッファーを解放しないと)言うならともかく
という意味か?
そうだったらそこまでエスパーにはなれんかったわ
2017/11/11(土) 22:42:02.84ID:aJZfBE3c0
みじゅくもの
585デフォルトの名無しさん (ワッチョイ dfcc-TYjb)
垢版 |
2017/11/12(日) 05:09:14.57ID:yBBP+7vl0
>>583
何か勘違いしているか?
俺は生配列を使いたがるガイキチたちを擁護したいわけじゃないし
もちろん意見が一致していない
C++スレなのにC++のライブラリを食わず嫌いしてるフシのあるやつに
ちょっと話題を振ってみただけだ
586デフォルトの名無しさん (ワッチョイ 5f80-UJrp)
垢版 |
2017/11/12(日) 05:12:35.53ID:srpvXSqe0
エスパー通訳頼む
2017/11/12(日) 05:23:52.17ID:nuCi4dlE0
ストリングビューはストレージを保持しないぞ。
外部からやってきたやつに操作を与えるだけ。
パペットっていうかなんていうか。
588デフォルトの名無しさん (ワッチョイ 5f80-UJrp)
垢版 |
2017/11/12(日) 05:33:48.19ID:srpvXSqe0
>>587
誰もそんな事は聞いてないんだけど
2017/11/12(日) 07:18:14.98ID:nuCi4dlE0
そっか、当たり前すぎたな。
2017/11/12(日) 07:30:16.55ID:/72Ra87B0
頭でっかちなアスペ池沼多過ぎか
2017/11/12(日) 08:13:37.80ID:SrvHRpLe0
std::stringは有用だがstd::XXXstream系は糞杉
→必然的にsptintf_s()とstd::stringを併用するスタイルになる

いずれワカル
2017/11/12(日) 08:22:45.23ID:SrvHRpLe0
および有用だからといってプログラムの動作根拠を成す
数量的関係の把握をサボるというのは話が違う
std::stringにメモリが許す限りいくらでも長い文字列を格納できるから大丈夫とか、
スマポを使っとけばいつか(10万年後かもしれないが)確実に開放してくれるから大丈夫という見込みだけで
テストもせずに青天井なデータ処理を許すプログラムをリリースするのは
素人プログラミングに後退である
ていうか現在の潤沢なメモリ搭載環境では問題の発覚が遅れる分なお悪い
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況