C++相談室 part123 [無断転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2016/02/21(日) 16:36:27.08ID:jZESqUY+ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part122
http://peace.2ch.net/test/read.cgi/tech/1453557975/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1439849418/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0002デフォルトの名無しさん
2016/02/21(日) 16:37:13.72ID:jZESqUY+https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
0003デフォルトの名無しさん
2016/02/21(日) 16:38:18.90ID:jZESqUY+環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0004デフォルトの名無しさん
2016/02/21(日) 16:39:22.97ID:jZESqUY+0005デフォルトの名無しさん
2016/02/21(日) 16:42:58.92ID:x0ZK9w0e何故cは0になるのですか
0006デフォルトの名無しさん
2016/02/21(日) 16:44:46.98ID:BYiGM6la>externは引き続く識別子が外部シンボル(!=ファイルスコープ)であることを明示するためのもの
んなこたーない
0007デフォルトの名無しさん
2016/02/21(日) 16:44:54.68ID:toLQNscPWindowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0008デフォルトの名無しさん
2016/02/21(日) 16:48:35.85ID:2IuYSi1y初期値が設定されないまま読み出されているので未定義動作。
0 が読み出されたように動くこともあるというだけ。
0009デフォルトの名無しさん
2016/02/21(日) 16:51:01.47ID:BYiGM6la0010デフォルトの名無しさん
2016/02/21(日) 17:10:56.91ID:hql2OPnW偶然だ,頼ってはいけない
0011デフォルトの名無しさん
2016/02/21(日) 17:16:20.23ID:BYiGM6laそんなことあった失礼>>8
0012デフォルトの名無しさん
2016/02/21(日) 17:21:25.25ID:m+BXwdHb規格上未定義動作というレスで十分
0013デフォルトの名無しさん
2016/02/21(日) 17:34:03.41ID:toLQNscP0014デフォルトの名無しさん
2016/02/21(日) 17:55:01.74ID:UzPMPT/j1.ore.cppにも#include "ore.h"を入れる。
2.classやstructの宣言、定義も普通にore.hで行う。
3.インスタンスとして生成するものにはexternつける。
4.グローバル変数等も同様。
5.それらはore.cpp内で初期値与えたりなんか色々。
ちゃんと動作させようとするならこんな感じ?
あとwifeの複数形は使ったことなくて知りません。
0015デフォルトの名無しさん
2016/02/21(日) 18:06:28.24ID:jZESqUY+0016片山博文MZ ◆T6xkBnTXz7B0
2016/02/21(日) 21:02:00.64ID:mZ9I4pVLhttp://katahiromz.web.fc2.com/mathai/list_process.zip
感想を聞かせて欲しい。
prologで良いじゃんっていう感想はあり?
fgetsの第二引数にsizeofを使いたい
コメント少なめ
1関数100行超え当たり前をどうにかしたい
他
0019片山博文MZ ◆T6xkBnTXz7B0
2016/02/21(日) 22:40:14.68ID:mZ9I4pVLPrologでリスト方程式を解くプログラムを作って欲しいんだが、可能だろうか?
0020デフォルトの名無しさん
2016/02/21(日) 23:39:26.02ID:BYiGM6laexternはリンケージの内部・外部とあまり関係無い
static void f();
const int g;
extern void f(); //内部リンケージ
extern int g; //内部リンケージ
0021デフォルトの名無しさん
2016/02/22(月) 01:21:52.17ID:x/uM3a1P
チューリング完全である以上は可能だろうけど、リスト方程式とは?
0023片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 14:25:58.02ID:C/gFN+RLリスト(ここでは動的配列みたいなもの)に対する基本操作を関数で表し、
リスト変数と関数からなる等式によって2個以上の
リスト変数の関係を表すとき、その式に含まれるあるリスト変数はどのように表せるか。
という問題なんだけど。
用語の厳密な定義か任意の言語による実装例を望むんだけど
リスト変数ってのは
1. N次元ベクトルを格納するリスト型の変数の事(std::list<int> list;)?
2. それとも環境に束縛されている変数を記述するリストの事(std::list<std::pair<std::function<int()>, std::function<void(int)>>> values;)?
3. それとも式を名前や演算子のリストとして表現した物(std::list<Token> expr;)?
4. それとも構文解析済みの式を格納した木の事(struct L {std::list<L> left, right; Token token;}; std::list<L> ast;)?
あとは
3番だと仮定して、入力されるリスト表現された式は主加法標準形のように何らかの標準化がされていると仮定しても良い?
数学的な意味での「変数」は複数存在しうる?
人力でなら代数的に解ける?つまり、注目している変数の次数は高々4次だと仮定しても良い?
関係が複数の組に対して定義されている時で、かつ、注目している変数について解いた結果として独立な式が得られた場合、
つまり関係式に十分なランクがある場合に、どう動作するべき?
0025デフォルトの名無しさん
2016/02/22(月) 18:01:13.58ID:2E9mhUXS{
hoge( int ){}
};
hoge h[ 8 ] = {};
初期化の値を省略した場合はゼロで初期化されるといろんなサイトに書いてあるのに初期化されません
何故ですか
0026片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 18:02:19.08ID:C/gFN+RL4個の項1,2,3,4を順番に並べたリストを<1,2,3,4>と表す。
リストXの第(h+1)項をX[h]と表す。<1,2,3,4>[1]==2である。
リストXとYを連結した結果をAPPENDLIST(X,Y)と表す。
リストXに項yを追加した結果をAPPENDITEM(X,y)と表す。
リストXから項X[h]を取り除いた結果をERASEITEM(X,h)と表す。
0027片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 18:10:53.22ID:C/gFN+RLここでZ=INSERTITEM(X,h,y)と仮定すると、X=ERASEITEM(Z,h)と書ける。
これは方程式Z=INSERTITEM(X,h,y)のXについての解であると言える。
一方、Z=ERASEITEM(X,h)と仮定するとX=INSERTITEM(Z,X[h])と書ける。ただ、XのうちでX[h]は未知数として残る。
私は数学者ではないので未知の項目があるときにどのように扱えばいいかはわからない。
0028片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 18:30:37.05ID:C/gFN+RL主語が抜けてるよ。「メンバー変数」がゼロクリアされるんだよ。
そのhoge構造体にはメンバー変数がない。
0029片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 18:55:08.21ID:C/gFN+RLリストを操作して別のリストを作り出すという変換器Cに対して
Cが基本操作c_1,...,c_nの合成で表せたなら、Cの逆変換器C^(-1)は
それらの逆変換器c_n^(-1),...,c_1^(-1)の合成で表せる。
つまり、あるプロセッサから逆の動作を行う別のプロセッサを作れるわけです。
http://ideone.com/H9X9nS
こういう感じ?
0031片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 19:10:56.66ID:C/gFN+RLいい感じ。残念ながら私はまだPrologを習得していないので必要なら勉強するつもり。
「SOLVE FOR X: 方程式」みたいな表現で方程式を解けると有り難い。
メールでAmazonギフト券5000円差し上げます。メルアド教えて。
5000円券くれるのん?ありがとう。
[email protected]
prologは全探索すれば解けて、パターンマッチングとして記述できる問題を書くのには向いてるけど、
本質的に繰り返しを含むアルゴリズム、例えばニュートン法なんかを書くには向いてないですよ。
prologで解く典型的な問題としては
N-Queensとか4色問題とか、あとは条件付きスケジューリングなんかが挙げられるです。
0033デフォルトの名無しさん
2016/02/22(月) 19:31:42.90ID:Sq52s7+Oコンパイルが通らないからです
0035片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 20:05:18.22ID:C/gFN+RL【論理】Prolog【初心者】
http://peace.2ch.net/test/read.cgi/tech/1289016056/
0036デフォルトの名無しさん
2016/02/22(月) 20:45:46.28ID:yZnaoS7Hゼロで初期化されるなら
hoge h[8] = { hoge(0), hoge(0), hoge(0), hoge(0), hoge(0), hoge(0), hoge(0), hoge(0) };
となるんじゃないんですか
0037デフォルトの名無しさん
2016/02/22(月) 22:22:03.27ID:v1Wohs7hゼロ初期化はコンストラクタ引数にゼロを渡すのとはまったくちがう
struct hoge
{
int baka;
};
hoge h[ 8 ] = {};
ならh[0].baka〜h[7].bakaはゼロ初期化される
っていうか初心者歓迎スレに行け
0038片山博文MZ ◆T6xkBnTXz7B0
2016/02/22(月) 22:22:33.71ID:C/gFN+RL0039デフォルトの名無しさん
2016/02/22(月) 22:56:49.91ID:/YQF/sqY「ゼロ初期化」っていう訳語の専門用語と、「ゼロで初期化する事」は意味が違う。
zero initializationでググると良いよ。
メール受け取ったよ
0041デフォルトの名無しさん
2016/02/22(月) 22:58:23.84ID:yZnaoS7Hstruct hoge
{
hoge(){}
int baka;
};
ならbakaは不定です。
ほんとにゼロ初期化されるのがルールなんですか
0042デフォルトの名無しさん
2016/02/22(月) 23:00:01.44ID:yZnaoS7H大抵のサイトは値を省略すると「ゼロで初期化される」と書いてあります。
正確なところを教えてください。値を省略すると何が起こるのですか
0043デフォルトの名無しさん
2016/02/22(月) 23:33:38.04ID:/YQF/sqYn3690から抜粋すると
8.5.17:The semantics of initializers are as follows. The destination type is the type of the object or reference being
initialized and the source type is the type of the initializer expression. If the initializer is not a single (possibly
parenthesized) expression, the source type is not defined.
— If the initializer is a (non-parenthesized) braced-init-list, the object or reference is list-initialized
8.5.4.3: List-initialization of an object or reference of type T is defined as follows:
if the initializer list has no elements and T is a class type with a default constructor, the
object is value-initialized.
8.5.8: To value-initialize an object of type T means:
— if T is a (possibly cv-qualified) class type (Clause 9) with either no default constructor (12.1) or a
default constructor that is user-provided or deleted, then the object is default-initialized
8.5.7: To default-initialize an object of type T means:
— if T is a (possibly cv-qualified) class type (Clause 9), the default constructor (12.1) for T is called
つまりこの場合に限ると
・リストで初期化するとlist-initializeされる。
・リストが空の場合、list-initializeはvalue-initializeになる。
・デフォルトコンストラクタが削除されてたり、ユーザ定義されてる場合はvalue-initializeはdefault-initializeになる。
・default-initializeはデフォルトコンストラクタを呼び出す
・hoge::hoge()は何も実行しない→hoge::bakaは未定義のままになる
といった具合。
解決するには、
hoge() : baka(0) {return;}
みたいにちゃんと初期化コードを書かなきゃ駄目。
0044デフォルトの名無しさん
2016/02/22(月) 23:37:52.25ID:/YQF/sqYその場合はvalue-initializeはzero-initializeになるですよー
0045デフォルトの名無しさん
2016/02/22(月) 23:59:33.96ID:ANT1CVM2struct hage
{
hage() = default;
hage( int ){}
};
これでOK
0046デフォルトの名無しさん
2016/02/23(火) 02:18:04.37ID:gGx+alPj以下のようにforの中に定義を書いてしまった場合、forのループの度に
ラムダ式のオブジェクトを生成したりするんでしょうか?
そうだとするとforの外に出しておいたほうがいいんでしょうか?
for
{
〜ウン十行ある〜
auto func = [](){}; // ラムダ式を使う場所の近くで定義を書きたい(把握しやすいように)
if
{
func();
}
else
{
func();
}
}
0047デフォルトの名無しさん
2016/02/23(火) 02:42:27.72ID:0Gk/RmeS0048デフォルトの名無しさん
2016/02/23(火) 07:59:59.43ID:ltvQNGjy以下だと、int baka; を、{ }で囲んでいないから、初期化できていない
struct hoge
{
hoge(){}
int baka;
};
上記を以下のようにすればよい。>>37 に書いてある
struct hoge
{
int baka;
};
hoge h = {};
ちゃんと本を読め。初心者歓迎スレに行け
0049デフォルトの名無しさん
2016/02/23(火) 08:04:39.95ID:ltvQNGjyループ毎に、処理が変わらないのなら、forの外に書く
ループ毎に、処理が変わるのなら、forの内に書く
0050デフォルトの名無しさん
2016/02/23(火) 08:18:48.42ID:UeUvEN3+bakaをゼロで初期化する方法は最初から聞いてません
初期化の値を省略した場合の挙動を聞いているのです
デフォルトコンストラクタが呼ばれるならそう書けばいいのにどこもゼロで初期化されるとしかかいてませんでした
0051デフォルトの名無しさん
2016/02/23(火) 08:31:58.63ID:xDQTJcBy>>43の後に>>48はいろいろとマヌケすぎる
0052デフォルトの名無しさん
2016/02/23(火) 11:21:56.71ID:ltvQNGjyそもそも必ず明示的に初期化すべき
多くのコーディング規則でも、
初期化していない値を使ってはならないと書いてあるだろ
未初期化の場合、初期化し忘れたのか、
故意にやっているのか、意図がわからないから困る
もし、各コンパイラで挙動が異なったら、
こんなバグや意図を突き止めて、修正するのは大変
0053デフォルトの名無しさん
2016/02/23(火) 13:35:15.59ID:aFHEViKg素人が適当なウソを無責任に書き散らしているサイトが多いが、
「どこでも」と言うなら、Cの構造体の初期化について書いてあったんだろう。
要約するとお前が間抜け
0054デフォルトの名無しさん
2016/02/23(火) 14:05:39.64ID:4c1IOC2xC++の文脈でPODと非PODの違いにも触れずに={}で一律にゼロ初期化されるなんて
書いてるバカなサイトなんて見たことないんだが?
どこでもっていうなら3つくらいは挙げてくれ
0055デフォルトの名無しさん
2016/02/23(火) 14:15:32.01ID:UeUvEN3+列挙しても特に意味ないので
意味があるならやりますけど
0056デフォルトの名無しさん
2016/02/23(火) 14:24:32.35ID:4c1IOC2x0057デフォルトの名無しさん
2016/02/23(火) 14:37:12.48ID:UeUvEN3+どうしてしまったんですか
0058デフォルトの名無しさん
2016/02/23(火) 20:17:07.10ID:bPGlp/ev意味ならあるだろ
>>54は={}でゼロ初期化されるなんて書かれているサイトは見たこと無いって主張していて、
君はその逆に、どのサイトを見ても={}でゼロ初期化されるって書いてあると主張している。
どちらが正しいか証明したければ
君が知ってるサイトを片っ端から挙げるべきなのは分かるね?
逆に君がそうしない、又は出来ないというのなら君が単に嘘ついて炎上学習したって事になる。
0059デフォルトの名無しさん
2016/02/23(火) 20:24:46.11ID:MF5ot8kL嘘もついてないですし自分の正しさを証明する必要も意味もないので
貼るなら正しい仕様を理解するための参考になるサイトを貼ってくれる方がいいですね
ダメなサイトを貼る意味ってあります?
0060デフォルトの名無しさん
2016/02/23(火) 20:34:32.34ID:xDQTJcBy興味があるので、ゼロ初期化と書いてあるサイトを教えていただけませんか?
今回だけ特別に教えて欲しいです。
代わりに参考になるサイトを紹介します
http://www.open-std.org/
→WG21→papers
N4567がオススメです
0061デフォルトの名無しさん
2016/02/23(火) 20:48:31.49ID:MF5ot8kLそこは知ってるので別の所お願いします
0062デフォルトの名無しさん
2016/02/23(火) 23:03:35.63ID:bPGlp/ev背理法って知ってる?
0063デフォルトの名無しさん
2016/02/24(水) 06:55:08.54ID:iraD9m85熱膨張的な物言いでカッコいいですね
0064デフォルトの名無しさん
2016/02/24(水) 07:00:00.19ID:iS9soXkB0065デフォルトの名無しさん
2016/02/24(水) 08:48:53.60ID:qiLj0DES0066デフォルトの名無しさん
2016/02/24(水) 12:21:03.69ID:CiZ4HRqFム板じゃないところに来てるかと思って板名見なおしたぞ
0067デフォルトの名無しさん
2016/02/24(水) 14:23:42.94ID:4ZA9ynQM>本名、片桐 由美(かたぎり ゆみ)。東京都大田区出身。
>スターダストプロモーション芸能1部所属。
0068デフォルトの名無しさん
2016/02/24(水) 20:35:27.44ID:qiLj0DES0069デフォルトの名無しさん
2016/02/24(水) 21:23:02.15ID:wSKjAMnVa = int();
のint()はどういう意味ですか
一行目と二行目のint()に違いはありますか
0070デフォルトの名無しさん
2016/02/24(水) 21:27:07.75ID:f7gTsPBB二行目、コンストラクトした一時オブジェクトをaに代入する。
0071デフォルトの名無しさん
2016/02/24(水) 21:31:59.33ID:iraD9m850072デフォルトの名無しさん
2016/02/24(水) 21:44:13.38ID:t5G9cIIP結構面白かったです。
0073デフォルトの名無しさん
2016/02/24(水) 22:14:05.66ID:ZvNmPlpt知ってるくせに
0074デフォルトの名無しさん
2016/02/25(木) 09:45:38.74ID:pcAVTpJwと
int(0);
は何が違うんですか
0075デフォルトの名無しさん
2016/02/25(木) 09:50:39.66ID:pDSMfAMlだけどよっぽどの偏屈者じゃない限りint()とかint(0)とか書かない
0076デフォルトの名無しさん
2016/02/25(木) 20:29:55.94ID:/tM+b5YWint(0)は0をintにconst_castした結果
0077デフォルトの名無しさん
2016/02/25(木) 23:46:46.50ID:Y3PURJ2yauto j = int{0}; は変人
0078デフォルトの名無しさん
2016/02/26(金) 00:43:33.92ID:VN+AWD5G0079デフォルトの名無しさん
2016/02/26(金) 02:27:23.53ID:JkkprwN30080デフォルトの名無しさん
2016/02/26(金) 02:57:45.65ID:sByuqtKsコンストラクタなのかキャストなのかも分かりにくいし
最高です
0081デフォルトの名無しさん
2016/02/26(金) 06:59:41.78ID:L7RTVb9K0082デフォルトの名無しさん
2016/02/26(金) 07:10:06.43ID:FbdyjvxV0083デフォルトの名無しさん
2016/02/26(金) 07:44:52.80ID:L7RTVb9K0084デフォルトの名無しさん
2016/02/26(金) 07:48:12.67ID:L7RTVb9K標準C++規格でのやり方では聞いたことが無い
0085デフォルトの名無しさん
2016/02/26(金) 08:01:04.93ID:Pw5RFD2X方法が無いと断定する低能には難しいだろうな
0086デフォルトの名無しさん
2016/02/26(金) 08:04:28.09ID:tJ1gUyHdそんなことやる必要があるんだろうか。
0087デフォルトの名無しさん
2016/02/26(金) 08:28:20.75ID:ouDcFdqgnew(p) hoge();
で
0088デフォルトの名無しさん
2016/02/26(金) 08:53:49.35ID:L7RTVb9K初期値がゼロのメンバ変数はいちいち初期化する面倒が不要になる
0089デフォルトの名無しさん
2016/02/26(金) 10:15:10.11ID:OlJixx6HX *x = new X({0, 0, 0});
これを簡略化したいってことか?
0090デフォルトの名無しさん
2016/02/26(金) 12:19:06.42ID:h1q56VEq0091デフォルトの名無しさん
2016/02/26(金) 18:27:57.97ID:Pw5RFD2Xstruct baka {
int p;
baka() = default;
baka(int p) : baka{}, p{p} {
}
};
0092デフォルトの名無しさん
2016/02/26(金) 18:43:51.81ID:AYRtcLu9int a=0;
bool b=true;
baka() = default;
};
でええやん
0093片山博文MZ ◆T6xkBnTXz7B0
2016/02/26(金) 18:45:56.98ID:6Zondczsint a=0;
bool b=true;
};
0094デフォルトの名無しさん
2016/02/26(金) 19:38:43.59ID:VKP1Cmo00095デフォルトの名無しさん
2016/02/26(金) 20:27:08.19ID:5826a3fE0096デフォルトの名無しさん
2016/02/26(金) 23:25:03.72ID:yiTr60/V型になるように型拡張を行うには何のテクニック使ったらいい?
あ、単純な演算子のオーバーロード使うと結構大変だから(できんわけではないが)
テンプレートテクニックとかうまく使えないかな。
0097デフォルトの名無しさん
2016/02/26(金) 23:45:09.61ID:zaiZLpHx0098デフォルトの名無しさん
2016/02/27(土) 00:58:43.79ID:e3stW6O/行列の個々の要素ごとにdoubleとcomplex<double>で四則演算するなら
結果は自動的にcomplex<double>になるだろ
0099デフォルトの名無しさん
2016/02/27(土) 01:54:26.55ID:pvHfkl8Dそういう演算はC++では普通標準で用意しないから自分でオーバーロードすればいいじゃん
0100デフォルトの名無しさん
2016/02/27(土) 01:57:02.77ID:C/ecoBXH無職5年目ですが、ぷろぐらむ(C++)Win32 アプリケーションを使い
ゲームを製作(勉強)したいと思いました。
お勧めの参考書籍やサイトが有りましたら教えて下さい
0101デフォルトの名無しさん
2016/02/27(土) 02:32:29.58ID:wxfsuIHK行列クラス自分で作るつもりなら当然行列どうしや行列とスカラーの演算子も定義しなきゃいかんわな
俺ならそんなもの自作しないで既存の行列演算ライブラリ(例えばeigenとか)使うけど
ちなみに>>98が言ってるようにdouble型とcomplex<double>型のスカラー演算結果は標準でcomplex<double>になるよ
0102デフォルトの名無しさん
2016/02/27(土) 03:47:18.73ID:0gtZVCNdここは怖い人ばかりなので初心者スレへどうぞ
0103デフォルトの名無しさん
2016/02/27(土) 04:15:41.61ID:EVLCSxnr0104デフォルトの名無しさん
2016/02/27(土) 09:03:39.57ID:vL66Pzdeもしかして、このあたりの話をすればいいのかな?
http://stackoverflow.com/questions/17013655/how-to-use-decltype-to-determine-the-result-of-an-addition
これが「結構大変だ」と言っていたのならすまぬ。
0105デフォルトの名無しさん
2016/02/27(土) 09:52:02.29ID:HsyJ5PWOありがとう。
スカラー単位の型拡張はあたりまえだけど、double型を要素とする
行列をcomplex<double>型の行列に型拡張するときどうするんだろ
と思ってね.
やはり要素レベルでtraitsを使って,traitsで定義した型を要素と
する行列を作るのが正攻法かなあ。C++14だともっとエレガントに
できないかな? 紹介してくれた所を見てみるよ.
0106デフォルトの名無しさん
2016/02/27(土) 12:31:21.47ID:hVqcAFgk0107デフォルトの名無しさん
2016/02/27(土) 16:53:21.38ID:tW+Ks6U10108デフォルトの名無しさん
2016/02/27(土) 18:46:59.39ID:HsyJ5PWO0109デフォルトの名無しさん
2016/02/27(土) 20:19:31.60ID:qyipvj4l0110デフォルトの名無しさん
2016/02/27(土) 20:25:42.58ID:HsyJ5PWO0111デフォルトの名無しさん
2016/02/27(土) 20:43:20.31ID:e3iZnQnQ最後のアンダーバーは何のためにあるですか?
0112デフォルトの名無しさん
2016/02/27(土) 21:54:26.15ID:TnvXsjWd0113デフォルトの名無しさん
2016/02/27(土) 21:57:54.41ID:EVLCSxnrプログラム言語は難しいだろう
0114デフォルトの名無しさん
2016/02/27(土) 22:06:17.26ID:EVLCSxnr低能が書いた#defineによる定数と
名前を衝突しにくくするためだろうきっと
0115デフォルトの名無しさん
2016/02/27(土) 22:07:02.57ID:T6Jc3KoXint a['A' or L'A'];
みたいな
0116デフォルトの名無しさん
2016/02/27(土) 22:26:19.05ID:TnvXsjWdあのさ、ここは2チャンネルであって、基本的に初心者が集まる場所なんだよ?
昔とは違うんだ。わかるか?
0117デフォルトの名無しさん
2016/02/27(土) 23:38:42.62ID:bRJMsBK5馬鹿の無根拠な妄言ktkr
0118デフォルトの名無しさん
2016/02/27(土) 23:53:52.62ID:TnvXsjWd0119デフォルトの名無しさん
2016/02/28(日) 09:01:53.38ID:p5UOgBYD0120デフォルトの名無しさん
2016/02/28(日) 09:51:52.96ID:sxXcnRPc14歳からはじめるC言語オンラインゲームプログラミング
15歳からはじめるDirectX9 3Dゲームプログラミング教室
14歳からはじめるシリーズ~ あと二冊
0121デフォルトの名無しさん
2016/02/28(日) 10:59:04.87ID:yeDT/yDi0122デフォルトの名無しさん
2016/02/28(日) 13:29:41.30ID:w64tNJjH0123デフォルトの名無しさん
2016/02/28(日) 13:48:26.49ID:5n5R60tK0124デフォルトの名無しさん
2016/02/28(日) 14:19:39.94ID:tz1QY8TO組む際に何がネックになってるのかね。
0125デフォルトの名無しさん
2016/02/28(日) 17:19:18.45ID:yeDT/yDi>>124
Compositeでchildrenの型としてComponentを用い、それを継承してComposite1とComposite2を作ったら
これらのchildrenの型が自動的にComponentになってしまうのでどこでどうやって型を明示すればよいのか困っております
0126デフォルトの名無しさん
2016/02/28(日) 17:35:13.98ID:emPXsfmM0127デフォルトの名無しさん
2016/02/28(日) 18:05:44.76ID:jJK+500Y配列要素の型を明示したいだけなら多態性がわかっていれば問題なくできるはず…
ただし、インスタンスの配列で多態性をやるには配列要素の型は基底クラスでなく派生クラスにする必要があり、
派生クラスが2種類(以上)あるcomponentパターンはできない
この場合の配列は基底クラスを指すポインタの配列であるべきなのでは…
※ 個人の感想です。
0128デフォルトの名無しさん
2016/02/28(日) 18:27:33.71ID:fFRYdAaf0129デフォルトの名無しさん
2016/02/28(日) 18:28:25.88ID:yeDT/yDiCompositeパターンじゃなくてもいいのですが、childrenに対する操作は同じ操作がたくさんあるので継承したいのです。
しかしcomposite1はcomposite2にしかないメソッドを呼び出すこともあり、この時ダウンキャストするのを出来れば避けたいと思っております。
>>127
やはり限定するのは難しいですか……
すみません、
>配列要素の型を明示したいだけなら多態性がわかっていれば問題なくできるはず
というのは何を使って明示することを想定されているのか教えていただけないでしょうか?
0130デフォルトの名無しさん
2016/02/28(日) 19:11:55.42ID:c40FCrwkComposite2を返してComposite2はLeafを返せばいいだけだろ。
0131デフォルトの名無しさん
2016/02/28(日) 19:52:22.72ID:PMSRihXY「これらのchildrenの型が自動的にComponentになってしまう」
↑ここが何かおかしい。んなわけねーだろ、と。
ほんとうにそんなところまで Composite が制約を加えてるなら、そこが問題。
>>129
ダウンキャストして済むならそれで済ませればいいだろうとも思う。
「避けたい」の具体的な理由があるのかと。
0132デフォルトの名無しさん
2016/02/28(日) 20:57:13.19ID:gim467qRchildrenに対する操作の一部を共通化したいだけなら、
こんな感じでCompositeに共通処理を集めるだけじゃ駄目かね。
template<class Child> class Composite { /* 共通処理 */ };
class Leaf { };
class Composite2 : public Composite<Leaf> { /* Leafだけの処理 */ };
class Composite1 : public Composite<Composite2> { /* Composite2だけの処理 */ };
0133デフォルトの名無しさん
2016/02/28(日) 21:20:23.21ID:yeDT/yDiclass composite{
vector<shared_ptr<component> > children;
}
class composite1:public composite{
}
の形で実装したらcomposit1のchildrenはcomponentになると思っていましたが、違ったでしょうか?
ダウンキャストを避けたいのは単に私が管理しきれなくなりそうだからです
>>132
おっしゃる通りの実装で解決しました。
たしかにtemplateを使えば私の望む動きをしてくれます。
分かりやすく素晴らしい回答大変ありがとうございました。
0134デフォルトの名無しさん
2016/02/28(日) 21:27:42.44ID:emPXsfmM0135デフォルトの名無しさん
2016/02/28(日) 21:33:54.60ID:PMSRihXY配列実体の持ち方を composite で決めてしまっているところが問題だということ。
class composite{
virtual component& nth_child(int n) = 0;
}
class composite1:public composite{
vector<shared_ptr<compisite2> > children;
}
こうしておけばよかったんじゃないかと思うんだけど >132 で解決したならいいかな。
0136デフォルトの名無しさん
2016/02/28(日) 22:12:35.00ID:jJK+500Y実装まで最初の基底クラスに集約するのが良い設計なのかどうか…
Cmposite1、Comosite2だけならまだしも
Cmposite3、Comosite4、…と増えていった場合に都度Compositeクラスのソースコードが編集され、肥大化していくんやで〜
0137デフォルトの名無しさん
2016/02/29(月) 05:58:03.54ID:j6jzPb2d継承が嫌なら、Compositeをメンバ変数にするとか、
vectorを受け取る関数テンプレート群にしてしまうとかすればいいし。
0138デフォルトの名無しさん
2016/03/02(水) 23:08:12.47ID:g3p9uXMcウィンドウハンドルHWND型を数値化する方法をご教授下さい。
何をしたいのかというと、VisualStudio付属のspy++を使用して、
色々な事をしています。
spy++の各ウィンドウの「ウィンドウ」文字列の右にウィンドウハンドルID?のような、
ウィンドウ毎に一意につけられたIDが表示されています。
このIDを取得したいのです。
なのでウィンドウハンドルHWND型を数値化出来れば、上記spy++のウィンドウハンドルID?
と同じ物を取得できると考えました。
よって、ウィンドウハンドルHWND型を数値化する方法をご教授下さい。
※もしかしたら目的と実施しようとしている事が間違っているかもしれません
※その場合は正しくウィンドウハンドルID?を取得できる方法をご教授下さい
0139デフォルトの名無しさん
2016/03/02(水) 23:26:29.94ID:v5tMoIR7size_t id = reinterprete_cast<size_t>(hwnd);
0140デフォルトの名無しさん
2016/03/02(水) 23:57:02.22ID:9ZwWQH++0141デフォルトの名無しさん
2016/03/03(木) 05:25:34.43ID:tlFkd89Q0142デフォルトの名無しさん
2016/03/03(木) 05:55:57.70ID:vKHIYEamで問題ないよ
0144デフォルトの名無しさん
2016/03/03(木) 06:03:58.47ID:vKHIYEamhttps://msdn.microsoft.com/en-us/library/windows/desktop/aa384203%28v=vs.85%29.aspx
0145片山博文MZ ◆T6xkBnTXz7B0
2016/03/03(木) 06:18:15.21ID:UnIH0jHmuint32_t id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(hwnd));
C++スタイルのキャスト、めんどい
0146片山博文MZ ◆T6xkBnTXz7B0
2016/03/03(木) 06:22:38.14ID:UnIH0jHmUINT id = static_cast<UINT>(reinterpret_cast<UINT_PTR>(hwnd));
0147片山博文MZ ◆T6xkBnTXz7B0
2016/03/03(木) 06:27:13.98ID:UnIH0jHm0148デフォルトの名無しさん
2016/03/03(木) 06:42:45.53ID:+JeDUCvS0149デフォルトの名無しさん
2016/03/03(木) 08:31:20.27ID:6K3/+EIJありがとう解決しました。
.Netの世界の文字列型に変換する必要があるので以下としました。
String^ hw_id = static_cast<UINT>(reinterpret_cast<UINT_PTR>(this->hw)).ToString("X");
0150デフォルトの名無しさん
2016/03/03(木) 08:36:11.53ID:km2vGawV持ってるか?
って聞かれたら、
Visual C++ 1.52c が押し入れのどこかに眠ってるはず
って答えることにしてる
0151デフォルトの名無しさん
2016/03/03(木) 11:36:15.96ID:DPHy8aYb昔手に入れたLSI Cの試食版の方ならたしかどこかに・・・
0152デフォルトの名無しさん
2016/03/03(木) 12:03:10.46ID:mDpo7bQQ0153デフォルトの名無しさん
2016/03/03(木) 12:50:10.40ID:ECv4uLci0154デフォルトの名無しさん
2016/03/03(木) 20:25:35.72ID:km2vGawVそれが >>150 だよ
大元の Visual C++ 2.0 は捨てたかも知らんけど、1.52c はなぜか捨てられない
0155デフォルトの名無しさん
2016/03/03(木) 20:47:49.02ID:+JeDUCvS0156デフォルトの名無しさん
2016/03/03(木) 21:13:16.06ID:km2vGawV単品売りは知らんけど 2.0 付属の奴は1995 年だから、1.52c も普通に CD-ROM だよ
https://ja.m.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B#.E6.A6.82.E8.A6.81
0157デフォルトの名無しさん
2016/03/03(木) 21:20:26.58ID:+JeDUCvSdouble spaceからサルベージするためにWin98SEをqemuかvboxにいれたイメージがどこかにあるはずだけど
0158デフォルトの名無しさん
2016/03/04(金) 09:04:28.30ID:TYlQwhRh0159デフォルトの名無しさん
2016/03/04(金) 10:00:38.32ID:wO5/jJwKそれにstrcopyなんてものは聞いたこともないぞ
朝からクソ酔っ払ってる俺よりもトンチンカンな事書き込むってどんだけヤバイ薬やってるんだよ
0160デフォルトの名無しさん
2016/03/04(金) 10:05:52.57ID:4C3oKPHs0161デフォルトの名無しさん
2016/03/05(土) 16:26:40.97ID:Uw046/hCc++で文字を入力するとそれを出力するものをビルドしたら、出力した後すぐにビルドが終わってしまいます。
出力後に画面を固定する方法はありませんか?
0162デフォルトの名無しさん
2016/03/05(土) 16:33:23.72ID:yY6Am1xoひとまずVSと仮定して、適当にブレークポイントでも打っとけば?
0163デフォルトの名無しさん
2016/03/05(土) 16:33:48.17ID:niBmwPNn入力待ちを利用する
0164デフォルトの名無しさん
2016/03/05(土) 16:36:24.81ID:TtOs9IsN0165デフォルトの名無しさん
2016/03/05(土) 16:53:34.22ID:Uw046/hC出来そうです。有難うございました。
0166デフォルトの名無しさん
2016/03/05(土) 17:01:13.18ID:e8RWR+IR0167デフォルトの名無しさん
2016/03/05(土) 17:42:59.14ID:u5sweskK0168デフォルトの名無しさん
2016/03/05(土) 18:15:07.47ID:eQxVJDBh0169デフォルトの名無しさん
2016/03/05(土) 19:06:42.96ID:e8RWR+IRそういう話じゃないなら、どう言う話だよ。
0170デフォルトの名無しさん
2016/03/05(土) 19:35:57.25ID:u5sweskKなんでそれが分らないんだよ
0171デフォルトの名無しさん
2016/03/05(土) 19:47:02.21ID:oAjMaO0hだからそういう話だろう。
0172デフォルトの名無しさん
2016/03/05(土) 19:56:15.67ID:u5sweskKもしかして、それがデバッガで実行するかそうじゃないかで変わるとでも思ってるのか?
0173デフォルトの名無しさん
2016/03/05(土) 19:57:35.25ID:e8RWR+IRPostMessage監視してろよ
0174デフォルトの名無しさん
2016/03/05(土) 19:59:34.21ID:e8RWR+IRもしかして、それがデバッガで実行するかそうじゃないかで変らないとでも思ってるのか?
0175デフォルトの名無しさん
2016/03/05(土) 20:00:46.88ID:TtOs9IsN0176デフォルトの名無しさん
2016/03/05(土) 20:03:50.62ID:45RldPY20177デフォルトの名無しさん
2016/03/05(土) 20:41:09.94ID:e8RWR+IR俺の推測は完璧だ。
キミも後10年PostMessage監視してれば、「環境書け」とかバカのひとつ覚え繰り返さなくても済むようになるかもね。
0178デフォルトの名無しさん
2016/03/05(土) 20:41:10.45ID:oAjMaO0hVSだと。
0179デフォルトの名無しさん
2016/03/05(土) 21:15:14.82ID:u5sweskKでもデバッガ無しかどうかの問題じゃないわな
0180デフォルトの名無しさん
2016/03/05(土) 21:41:59.15ID:NhCRzDCmやっぱり PostMessage から勉強しなきゃいけないと、そういうこと…?
0181デフォルトの名無しさん
2016/03/05(土) 21:50:07.17ID:u5sweskKたしかに俺はPostMessageについて書いた者だが
キミは
while (PostMessage(hWnd, WM_NULL, 0, 0))
と64メガのVirtualAllocで証明終了!君か
これをバカ呼ばわりされたのがよっぽど悔しかったみたいだな
CTRL-F5についてはいいことを教えてもらったよありがと
exe直接起動と振る舞いが違うんじゃ使うことはないだろうけど
もう一度言っておくけどキミがしつこく言ってる「PostMessageの失敗がメモリ不足の兆候になる」なんて俺は一言も言ってないからw
0182デフォルトの名無しさん
2016/03/05(土) 21:58:24.08ID:e8RWR+IR自信満々で、物凄くあたま悪い発言をして、しかも、その頭悪さを理解してないバカは
日本中探してもそんなに多くは無い。
471 デフォルトの名無しさん[sage] 2016/02/09(火) 08:07:47.87 ID:GGDlYrLi
Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0183デフォルトの名無しさん
2016/03/05(土) 22:04:16.82ID:u5sweskKそれが「PostMessageの失敗がメモリアロケーション失敗の兆候を知ることが出来る」としか読めないわけか
そんなんだから
while (PostMessage(hWnd, WM_NULL, 0, 0))
と64メガのVirtualAllocで証明終了!
になっちゃうんだよCTRL-F5クン
0184デフォルトの名無しさん
2016/03/05(土) 22:17:53.94ID:e8RWR+IRま、バカだから虚栄張ってないと世渡りできないんだろうが
0185デフォルトの名無しさん
2016/03/05(土) 22:21:58.02ID:NhCRzDCm0186デフォルトの名無しさん
2016/03/05(土) 22:43:46.74ID:KlM00wBUセミコロン『;』について質問ですが
クラスの場合
class Test
{ ..... };
『}』の後ろに『;』がついています
class Test
{ ..... } obj ;
この様に『}』と『;』との間に記述すれば
『obj』というオブジェクトが生成
という事を最近知りました
構造体で同じことを試したら
オブジェクトが生成できました
配列、列挙体に同じ事をしたらエラーになります
配列、列挙体の『;』は何ですか?
0187デフォルトの名無しさん
2016/03/05(土) 22:52:37.60ID:oAjMaO0h文法上そうなっている。
変数定義構文だから。
配列がどういう記述をしているかはわからないが、enumでもいけるだろ。
namespaceは要らないのよね。
0188デフォルトの名無しさん
2016/03/05(土) 23:12:16.43ID:xWrvFPw5知らなかったのに、結局偉そうなんだな
どうしようもないな
そんなことだからPostMessageなんだよ
サブスレッドから結果を返す為にPostMessage使ったんだって?バカ
0189デフォルトの名無しさん
2016/03/05(土) 23:29:40.33ID:oC+37QlpVisual Studioの挙動も知らずposix環境のツールも使えず一体何だったら知ってるんだろうか?
0190デフォルトの名無しさん
2016/03/05(土) 23:42:02.63ID:VRv8TvnQだとしたら、ほんとすげぇなwww
0191デフォルトの名無しさん
2016/03/06(日) 00:05:21.79ID:ChxbUFgQ会社勤めなら中堅どころなはずだが、これだけ無能な奴も珍しい
良く辞めずに続いてると思う
己の無能さを理解出来ないバカが最強って事だな
0192デフォルトの名無しさん
2016/03/06(日) 00:11:04.70ID:LHysMdWz0193デフォルトの名無しさん
2016/03/06(日) 00:13:58.16ID:FS9V5eXLそんなに話題がないのか?
終わってる言語なのか?
0194デフォルトの名無しさん
2016/03/06(日) 00:19:35.66ID:Brtwb7pX0195デフォルトの名無しさん
2016/03/06(日) 00:26:27.79ID:Vcl9wz74基本的に○○.hのクラスの中で定義して、○○.cppで実装すれば良いのでは?、と考えています。
namespaceを利用する理由は何ですか?
0196片山博文MZ ◆T6xkBnTXz7B0
2016/03/06(日) 00:31:44.13ID:EizY3BRi他の人が作ったソースを参照するときに名前が衝突しないようにするためだろうね。
0197デフォルトの名無しさん
2016/03/06(日) 00:33:35.07ID:R4Ql0hHb0198デフォルトの名無しさん
2016/03/06(日) 00:34:08.24ID:LHysMdWz名前だけで個人を識別してくださいって言われたらどう思う?
いやいや苗字もあったほうが識別しやすいよと思うだろ?
そんな時に使うんだよ
0199片山博文MZ ◆T6xkBnTXz7B0
2016/03/06(日) 00:50:13.80ID:EizY3BRistdとboostという2つのnamespaceにより同時に使っても名前は衝突しない。
また、using std::shared_ptr;のようにしてshared_ptrを切り替えて使うことができる。
0200デフォルトの名無しさん
2016/03/06(日) 00:53:06.89ID:0RQOBmjP定義の前後関係なく後ろにあるものも参照できるようになるのはいつですか?
いわゆる後方参照?と呼ばれるものだと思うのですが
今でも、同じクラス内に有るクラスやメソッドは記述の前後関係なく参照できますが
同じクラス内に定義が有るものは後方参照が可能な理由は、私が思うに
「同じクラス内に存在している」->「同一コンパイル単位に存在している」
という式が成り立つからだと思うんですよ
C++は分割コンパイルをサポートしている上に、C譲りのヘッダシステムなので
コンパイル単位を跨いで後方参照をするのが無理なのはわかります
そこで、同一クラス内に定義が有るなら必ず同じコンパイル単位に属するのは明白なので
これをもって、後方参照が可能になっているのかと
だったら、同じように同一ネームスペースの{}内に定義が有るクラスや関数も必ず同一コンパイル単位なわけですから
(何故なら{}は必ず対応していなければならないのだから)
後方参照が出来ても問題ないように思うのですが
細かいことを抜きにして、同一コンパイル単位内であれば後方参照が可能になれば良いんですが
部分的には既にできているわけですし
0201片山博文MZ ◆T6xkBnTXz7B0
2016/03/06(日) 00:55:01.26ID:EizY3BRiまとまりがなければ、プロジェクト全体を見ることになって、維持コストがかかる。
0202デフォルトの名無しさん
2016/03/06(日) 00:57:14.96ID:PT9uiEbBえ?
0203デフォルトの名無しさん
2016/03/06(日) 00:58:30.86ID:2oASoSJRリファレンスも読めずマトモに反論出来なかった低能の自演がまだ続くのか
0204デフォルトの名無しさん
2016/03/06(日) 01:05:53.01ID:2oASoSJR>文の終端記号
規格のどこを読むとそうなるのかkwsk
0205デフォルトの名無しさん
2016/03/06(日) 01:16:52.82ID:2oASoSJR>posix環境のツールも使えず
ほうほう、valgrindが一体POSIXの第何章で規定されているのですか?
0206デフォルトの名無しさん
2016/03/06(日) 02:17:18.54ID:tuNXTXW3いやー>>165で質問者が「入力待ちを利用する」という正しい方法で解決してるのに
しゃしゃり出てきてCTRL-F5などというバッドノウハウを披露するキミの捻れたプライドには到底及ばないよ
0207デフォルトの名無しさん
2016/03/06(日) 02:29:09.64ID:tuNXTXW3今ではWindowsでもLinuxでもメモリリーク検出とかにはInspector(インテル)を使ってるよ
0208デフォルトの名無しさん
2016/03/06(日) 04:05:47.59ID:ChxbUFgQ0209デフォルトの名無しさん
2016/03/06(日) 04:07:10.17ID:ChxbUFgQWindowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0210デフォルトの名無しさん
2016/03/06(日) 04:47:19.07ID:Vcl9wz74よくわかりました。
ありがとうございます。
0211デフォルトの名無しさん
2016/03/06(日) 06:01:58.25ID:2oASoSJR>>179のレスで少し驚いた
0212デフォルトの名無しさん
2016/03/06(日) 06:10:40.49ID:1plcRuJsこの言語は頭おかしいんじゃないんですか?
0213デフォルトの名無しさん
2016/03/06(日) 07:52:12.28ID:r0r1JwnRストラウストラップ先生は頭(の外観が)おかしい。
規格の変化の激しさ(不安定さ)を見ると規格作成者は頭おかしい。
このスレッドの住人も頭おかしい(この発言の投稿者も含む)。
C++の村へようこそ。
0214デフォルトの名無しさん
2016/03/06(日) 08:10:32.19ID:oNsCkDHW0215デフォルトの名無しさん
2016/03/06(日) 08:29:03.39ID:py9p5YRaどうもありがとう
enumも通りました
列挙型は列挙子しか代入できない事を理解していませんでした
enum E
{
a, b, c, d
}e;
int main()
{
cout << e << endl; //0
e = a;
cout << e << endl; //0
e = d;
cout << e << endl; //3
e = (E)1;
cout << e << endl; //1
}
配列は調査中です
0216デフォルトの名無しさん
2016/03/06(日) 10:32:12.23ID:tuNXTXW3お前は粘着根性だけは一級だ。そこだけは褒めてやるよ
ところで、CTRL-F5で「続行するには何かキーを押してださい」
が出てくるかどうかはVSのバージョンによるようだな
例えばVS2010のデフォルトで作ったコンソールアプリプロジェクトじゃそうはならなずにコンソールすぐ消える
まあ、俺はそんなあやふやなものは永遠に使うことはないだろうけど、豆知識として頭の片隅に置いておくよ
何故そういう違いが発生するのかもおかげさまで調べたらすぐに分かったし。ありがと
0217デフォルトの名無しさん
2016/03/06(日) 10:43:08.67ID:hANsEkzfもういいよ
VSのバージョンによらないよ
VSはCtrl +F5で起動するとサブプロセスとして走らせることができるんだよ
VS2008はサブプロセスとしてコンソールで起動されるのがデフォルトだったが、
2010以降は空のプロジェクトから作るとメインプロセスで走らせるのがデフォルトになった
ただ2010以降もコンソールアプリテンプレートから作ればサブプロセスとして走らせる設定がデフォルトになる
違いの原因を調べたって、一体何をどうやって調べたんだ
0218デフォルトの名無しさん
2016/03/06(日) 10:46:38.57ID:LHysMdWzNGしたいからコテつけてほしい
0219デフォルトの名無しさん
2016/03/06(日) 10:48:49.35ID:dMKN1oWbdmcで作った32ビットヘルツのオブジェモジュールは
win配下etcと互換性ありすか?
0220デフォルトの名無しさん
2016/03/06(日) 10:53:52.53ID:5DvD/H5Kハゲハゲ言うなハゲ!
0221デフォルトの名無しさん
2016/03/06(日) 11:05:06.45ID:Z2wdRjzgむしろ君が自演してないでコテ付けるべき
0222デフォルトの名無しさん
2016/03/06(日) 12:15:36.32ID:uXhlHP6G0223デフォルトの名無しさん
2016/03/06(日) 12:41:50.70ID:ChxbUFgQ471 デフォルトの名無しさん[sage] 2016/02/09(火) 08:07:47.87 ID:GGDlYrLi
Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0224デフォルトの名無しさん
2016/03/06(日) 12:52:01.64ID:uNrtakxt0225デフォルトの名無しさん
2016/03/06(日) 13:05:10.37ID:FS9V5eXL0226デフォルトの名無しさん
2016/03/06(日) 16:30:31.67ID:MC5mpgnRしかも入力待ちとか本来不要で本末転倒な解決策を改善だと思ってるし
0227デフォルトの名無しさん
2016/03/06(日) 16:55:34.96ID:rlBUJ/rg0228213
2016/03/06(日) 17:32:52.89ID:r0r1JwnR>>222 を見て「しまった」と思ったけど、他の良い表現が思いつかなかった。
でも >>227 に乗っからせてもらう。「仕様の拡大」がより適切だ。
規格や仕様じゃないけど、推奨される書き方は変化が大きいよね。
数年前のきれいなソースも、すぐに古臭くなる。
…などと知った口を叩けるほどC++の経験は積んでないんだけど。
0229デフォルトの名無しさん
2016/03/06(日) 18:16:36.06ID:o7h42g4Rそのうち維持しきれなくなってOpenGLのようにばっさりやることになるんだろう。
0230デフォルトの名無しさん
2016/03/06(日) 18:46:01.70ID:iWD/4muj0231デフォルトの名無しさん
2016/03/06(日) 18:54:13.36ID:O4MCW8880232デフォルトの名無しさん
2016/03/06(日) 20:21:03.80ID:rlBUJ/rg素人から見ても馬鹿みたいな構文だわ。
0233デフォルトの名無しさん
2016/03/06(日) 21:30:59.08ID:0RQOBmjPこの発言って、本人は
メモリアロケーションが失敗するより先にPostMessageが失敗するようになって
プログラムでPostMessageを使っていた場合は動作不能になって困るから
その辺に対処しなければならない
ってつもりで書いていると思うんだけど、一部の人は
メモリアロケーションに失敗するより先にPostMessageが失敗するようになるから
メモリ不足のテストに使える
って読み違えているんだよね、わざとかもしれないが
でもそんな究極の生命力のログ取りソフトを作らなきゃならないときに
サブスレッド作ってメインスレッドにデータ渡すときにPostMessage使っている時点でバカなんだがな
0234デフォルトの名無しさん
2016/03/06(日) 21:46:56.54ID:2oASoSJR>って読み違えているんだよね
俺もずっとそう思ってたが、よく読み返したら違っていた
コピペ荒らしには何を言っても無駄だろうが
0235デフォルトの名無しさん
2016/03/06(日) 23:29:20.12ID:ChxbUFgQまあ商用でもシミュレーションソフトとか、メモリ不足や設定ミスしたらエラーも出さずに普通にセグフォで落ちる場合があるものも多いけど。
ご丁寧にエラーを出したところでメモリ増やすかメッシュ数減らすと言うのは変わらんわけで。
467 デフォルトの名無しさん[sage] 2016/02/09(火) 04:30:48.06 ID:1CYnHFpe
>>461
世の中にある商用のシミュレーションソフトとやらのほとんどは
おまいらが見たら噴飯物かあるいは卒倒するレベルのコードだと思う
とくに国産ソフトは
470 デフォルトの名無しさん[sage] 2016/02/09(火) 07:58:11.21 ID:sh9Vl//D
>>469
設定ミスでフォルトするのはどうかと思うが、メモリ一不足の対応は難しいな
痴呆症のようだから、定期的に貼ってやるよ。
471 デフォルトの名無しさん[sage] 2016/02/09(火) 08:07:47.87 ID:GGDlYrLi
Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ
0236デフォルトの名無しさん
2016/03/06(日) 23:38:50.41ID:ChxbUFgQ他プロセスがメモリ使い尽した状況でPostMessageが失敗する
という現象が発生するという無能クンの主張
無能クンがPostMessageの失敗に対応したとか関係ない
そのような現象が無能クンの主張どおり発生するなら、それはメモリ状況の観測に利用出来るということだ
無能クンの報告では、簡単に作れるメモリを使い尽くすテストプログラムで再現したそうだし 笑
0237デフォルトの名無しさん
2016/03/07(月) 02:22:11.72ID:rcA1ymXWスレを荒らすのはいただけない
0238デフォルトの名無しさん
2016/03/07(月) 04:14:17.45ID:1EfQqvnHなるべく使わせない為の配慮なんだろうけど
0239デフォルトの名無しさん
2016/03/07(月) 06:54:32.46ID:HUiylToyそもそも...
> メモリアロケーションが失敗するより先にPostMessageが失敗するようになって
自体がほんとかなぁ〜?
って思われてるし
> その辺に対処しなければならない
そのご自慢の対処方法が GetLastError( ) の確認もせずにリトライするだけ
とかのお笑いレベル
どう見てもたまたまうまく動いてるように見えたからどやってるようにしか見えん
0240デフォルトの名無しさん
2016/03/07(月) 10:18:53.31ID:skfTtER3読み方が分からないからなるべく使わないようにしてるw
リインタープリットであってるのかな
0241デフォルトの名無しさん
2016/03/07(月) 10:22:22.50ID:TiPYYq0f0242デフォルトの名無しさん
2016/03/07(月) 10:37:35.54ID:VfKbAPeO0243デフォルトの名無しさん
2016/03/07(月) 11:38:42.08ID:4dTN6Z0PYes, but my program depends on the function and works well so far.
0244デフォルトの名無しさん
2016/03/07(月) 15:55:29.06ID:AqI6//Edいっそのこと(int)x使えばいいのに。
0245デフォルトの名無しさん
2016/03/07(月) 16:07:40.49ID:4dTN6Z0PNever!
0246デフォルトの名無しさん
2016/03/07(月) 17:44:56.74ID:SPuLNVrGreintrepret_castを何だと思っているんだろう
0247デフォルトの名無しさん
2016/03/07(月) 18:00:16.97ID:Ie6AXs1q0248デフォルトの名無しさん
2016/03/07(月) 18:41:28.00ID:rjj7cXsm{
F(s);
}
sは右辺値参照なのにどうしてFに渡せないのですか?
0249デフォルトの名無しさん
2016/03/07(月) 18:44:55.35ID:AwkwjYtb0250デフォルトの名無しさん
2016/03/07(月) 18:47:33.85ID:vq5fVXSL0251デフォルトの名無しさん
2016/03/07(月) 20:17:57.14ID:z9gSfyl10252デフォルトの名無しさん
2016/03/07(月) 20:30:48.32ID:rcA1ymXW0253デフォルトの名無しさん
2016/03/07(月) 21:19:45.32ID:PJh8eKUistd::string && s = hoge();
sは右辺値か左辺値か
0254デフォルトの名無しさん
2016/03/07(月) 22:01:51.49ID:rcA1ymXW0255デフォルトの名無しさん
2016/03/07(月) 22:16:10.78ID:DhnnCcYX0256デフォルトの名無しさん
2016/03/07(月) 22:19:04.83ID:be9Auz0bは?何が言いたいのか意味不明
その式の評価値は真か偽だろ
0257デフォルトの名無しさん
2016/03/07(月) 22:19:40.89ID:be9Auz0bsはhoge()の戻り値
0258デフォルトの名無しさん
2016/03/07(月) 22:21:10.23ID:addXPaOO0259デフォルトの名無しさん
2016/03/07(月) 22:22:18.18ID:addXPaOOないよな?
0260デフォルトの名無しさん
2016/03/07(月) 22:30:41.58ID:rcA1ymXW規格上はどちらでもない
0261デフォルトの名無しさん
2016/03/07(月) 23:33:11.14ID:DhnnCcYXどういう解釈になるんです?
この文だけでは未確定ってこと?
0262デフォルトの名無しさん
2016/03/07(月) 23:58:07.53ID:rcA1ymXW『std::string && s = hoge();』
この『s』は右辺値参照型の変数だが、式ではないので値のカテゴリー(lvalue,xvalue,prvalue)の概念は存在しない
0263262
2016/03/08(火) 00:01:44.10ID:xyKYQJcYのように式として使われて初めて左辺値になる
0264デフォルトの名無しさん
2016/03/08(火) 00:12:01.42ID:xyKYQJcY「f ( s ) に含まれる式sは、型が右辺値参照型で値のカテゴリーは左辺値」
と言った方がいいだろうか
0265デフォルトの名無しさん
2016/03/08(火) 00:13:06.20ID:A6lTQmi7なるほど、確かにここだけではどれかとは言えないですね。
勉強になりました。ありがとうございます。
0266デフォルトの名無しさん
2016/03/08(火) 07:10:35.81ID:jeIx1SXX0267デフォルトの名無しさん
2016/03/08(火) 07:58:44.45ID:s5rIDaCh規格でどう決まってるかは知らないけど。
0268デフォルトの名無しさん
2016/03/08(火) 19:34:59.52ID:0k5HNdyV厳格に規格で決まっていたら
ハゲ病的すぎるだろ
0269デフォルトの名無しさん
2016/03/08(火) 21:55:31.91ID:A6lTQmi7こうした考えられた仕様と設計を、一般の価値観で弱点と批判するのは論点がずれていますね。
0270デフォルトの名無しさん
2016/03/08(火) 21:56:39.84ID:Q4atenOx0271デフォルトの名無しさん
2016/03/08(火) 22:06:57.27ID:A6lTQmi70272デフォルトの名無しさん
2016/03/08(火) 22:12:40.09ID:OMUEfTHQ気のせいハゲ
これはただの語尾だハゲ
0273デフォルトの名無しさん
2016/03/08(火) 22:34:06.49ID:+4p1BEPZ0274デフォルトの名無しさん
2016/03/08(火) 23:26:46.03ID:40zCAszTnamespaceは同じ翻訳単位とは限らないお。
0275デフォルトの名無しさん
2016/03/09(水) 00:01:35.54ID:gceSYQgA同じネームスペースの{}で囲われた部分は同じコンパイル単位になるだろ
さもなくば、}が無いです、ってコンパイラに怒られる
同じコンパイル単位で、{}は必ず対になってなきゃダメだからね
だからネームスペースどうこうってより、その後ろの{}こそが重要なんだよ
{}に囲われた部分は必ず同じコンパイル単位になるから
本当なら前方参照は可能なはず
今は同じクラス内に有るもののみ前方参照が可能だが
これはクラス定義内は{}で守られていて必ず同じコンパイル単位になることが保証されているからだとも考えられ
同じ理屈でネームスペースにも拡張しても良いはず
もっと単純に、同じコンパイル単位であれば、前方参照が可能としても良いと思うがね
今のクラス内のみ前方参照が可能とかという、中途半端な仕様は意味が分からないね
文法的に出来るんならやれよ、他の今風の言語は大体可能だぞ
C#なんか、コンパイル単位を飛び越えて前方参照が可能なように
並行してコンパイルするって聞いたことあるぞ、本当かどうかは知らんがな
未定義なシンボルに出会ったら、一旦中断して、別のファイルをコンパイルするって感じかね
全く本当かどうかは知らないし、適当だが、C++にそこまでの要求はしない
ただ、同じコンパイル単位であれば前方参照できても良いだろってだけの話
0276デフォルトの名無しさん
2016/03/09(水) 00:52:56.35ID:gceSYQgA前方参照し放題の、順番なんか気にしない状態になるわけで(←実際には多少の制約はあるが)
既に、そういうことが現実に可能な状態なわけだから
同じコンパイル単位で前方参照を可能にすることは技術的に然程難しいことではないはずなんだよね
0277デフォルトの名無しさん
2016/03/09(水) 00:53:35.71ID:R7oQ7N64クラスのメンバ関数は前方宣言できないかわりに前方参照できるようにしてるだけで。
0278デフォルトの名無しさん
2016/03/09(水) 01:02:25.39ID:gceSYQgAclass name
{
void method(); //←コレ
};
これがメンバ関数の実質的な前方宣言だろ
実体の方はcppファイルにあるんだからな
だから、C++的には、たとえクラス内の前方参照が出来なかったとしても、一応成り立つんだよ
なのに、クラス内に関してだけは、利便性のために前方参照が可能となっている
だったら、利便性のために、同じコンパイル単位内であれば前方参照可能としても良いだろ
0279デフォルトの名無しさん
2016/03/09(水) 01:22:01.07ID:gceSYQgAクラス内で何か相互参照しているような場合は
必ずクラス定義とメンバ関数の実体は分けて定義してください、ってことになるわけだが
実際それで問題ないし、C++erには日常茶飯事にすら感じる話だが
これが面倒だからクラス内に関しては特別に前方参照を可能としたわけでしょ
でも、「相互参照している場合はクラス定義とメンバ関数の実体は分けて書いてください」
は、クラス内だけじゃなくて、C++の彼方此方に頻出するわけで
クラス内の相互参照問題だけ特別扱いする意味が良くわからないんだよね
技術的に可能な範囲で考えると、同じコンパイル単位なら前方参照可能だろう
0280デフォルトの名無しさん
2016/03/09(水) 01:46:28.08ID:gceSYQgAむしろ清いとすら思う
でもクラス内だけは特別に前方参照可能なんだよ
もしクラス内の前方参照が出来なくても言語としては成り立つにも拘わらずだよ?
もし出来なくても、クラス内で相互参照が発生した場合は、クラス定義とメンバ変数の実体を分けて書けって話で
これはC++では日常だろ?仮にクラス内の前方参照が出来無くてもC++的には普通のこと、むしろ自然
でも何故かクラス内だけ前方参照可能なんだよな
同じクラス内に有れば、変数もクラスも関数も、前方参照可能なんだよ
実際、ダミーのクラスでコードを囲めば、クラスだろうが変数だろうが関数だろうが
前方参照し放題って書き方も可能で、一つのテクニック
それが可能なのだから、技術的には同じコンパイル単位であれば前方参照可能に出来る筈なんだよ
0281デフォルトの名無しさん
2016/03/09(水) 02:13:30.73ID:gceSYQgAクラス定義とメンバ「変数」の実体
↓
クラス定義とメンバ「関数」の実体
0282デフォルトの名無しさん
2016/03/09(水) 04:38:36.51ID:XYqbGPFP0283デフォルトの名無しさん
2016/03/09(水) 06:24:16.72ID:PsUKAneXの独演会は終わった?
0284デフォルトの名無しさん
2016/03/09(水) 11:50:49.57ID:WF7rFyWlそんなにおかしな意見ではないと思うが
どこの世界にも「改善」を否定する283のような残念な人間は居るものだ
0285デフォルトの名無しさん
2016/03/09(水) 11:55:58.57ID:c8zeaZJl単に長文を否定してるだけかもしれない
0286デフォルトの名無しさん
2016/03/09(水) 12:05:50.76ID:1UcnLTLP0287デフォルトの名無しさん
2016/03/09(水) 14:02:39.92ID:VjFIrQgn0288デフォルトの名無しさん
2016/03/09(水) 14:25:54.39ID:WCvUs0lb別に大したこと言ってないんだから1レスで短く説明すればいい。
0289デフォルトの名無しさん
2016/03/09(水) 14:26:38.30ID:3jrP1VBb0290デフォルトの名無しさん
2016/03/09(水) 15:12:18.63ID:lSGTJ8xS「C++が廃れてないなら反響はなかった」
0291デフォルトの名無しさん
2016/03/09(水) 17:36:52.78ID:lHuhk1uYクラスと違って名前空間は後でいくらでも弄れるのだから、コード書く人間がどれが呼ばれるか今以上に予測が難しくなる。
0292デフォルトの名無しさん
2016/03/09(水) 19:25:22.04ID:8DyMxRveそう言うのがそれしかないとでも思ってるのか?
例えば inner class がどうあがいても前方参照できないことについてはどう思ってるんだい?
自分のことしか考えてなさそうだから
ぼくのかんがえたさいきょうのしーぷらすぷらす
って書かれるんだよ
0293デフォルトの名無しさん
2016/03/09(水) 21:19:55.72ID:gceSYQgAstruct outer
{
struct inner_a
{
void method(){ inner_b::method(); }
};
struct inner_b
{
static void method(){};
};
};
普通にinner_a内からinner_bを使えますが、いったい何のことを言っているんですか?
コンパイルもちゃんと通りますよ
0294デフォルトの名無しさん
2016/03/09(水) 21:30:15.59ID:EHNG1aVZ0295デフォルトの名無しさん
2016/03/09(水) 21:35:08.09ID:PsUKAneX> いったい何のことを言っているんですか?
それはこっちの台詞だよ...
inner class 前方参照
あたりでググってから出直してこい
0296デフォルトの名無しさん
2016/03/09(水) 21:37:16.35ID:gceSYQgA0297デフォルトの名無しさん
2016/03/09(水) 21:39:49.11ID:gceSYQgAだったら、インナークラスの前方宣言が出来ないって書くべきで
「inner class がどうあがいても前方"参照"できない」
って書くのはおかしくないですか?そっちのミスでしょ
0298デフォルトの名無しさん
2016/03/09(水) 21:53:21.58ID:gceSYQgAstruct outer
{
void method()
{
inner_a().method();
auto obj = new inner_b::inner_inner;
obj->method();
obj->value = inner_b::inner_inner::enum_::e;
}
struct inner_a
{
void method()
{
inner_b::inner_inner().method();
}
};
struct inner_b
{
struct inner_inner
{
enum struct enum_{ e, };
enum_ value;
void method(){}
};
};
};
一旦クラスで囲んでしまえば、こんな入り組んでいても、何事もなかったかのように前方参照が出来てしまう
C++を同一コンパイル単位内で前方参照を可能とすることに、文法的な隔たりや、技術的ハードルは無いという事だね
0299デフォルトの名無しさん
2016/03/09(水) 21:56:46.43ID:WCvUs0lb0300デフォルトの名無しさん
2016/03/09(水) 21:57:25.47ID:PsUKAneX> 「inner class がどうあがいても前方"参照"できない」
> って書くのはおかしくないですか?
メソッドではなく inner "クラス" の前方参照ができるようになってから出直してこいよ
0301デフォルトの名無しさん
2016/03/09(水) 22:05:10.18ID:WCvUs0lbいやお前も何言ってるんだよ・・・。
0302デフォルトの名無しさん
2016/03/09(水) 22:09:47.23ID:WF7rFyWl「クラススコープでできていることと同等のことを一つの名前空間定義のなかでもしたい」
というID:gceSYQgAの話と関係無いことを言い出す理由が不明。
唐突に根拠も無く「自分のことしか考えてなさそう」とか言い出すあたり、
知覚障害か何か?
0303デフォルトの名無しさん
2016/03/09(水) 22:10:12.26ID:jX68pRI90304デフォルトの名無しさん
2016/03/09(水) 22:13:56.70ID:gceSYQgAstruct outer
{
void method(){ inner_b obj; //←これ }
struct inner_a
{
void method()
{
inner_b obj; //←これ
}
};
struct inner_b{ };
};
VSだけかもしれないけど、インナークラスの前方参照は出来ますよ、ただし、メソッド内ではね
struct outer{ inner *ptr; inner{}; };
って書けない話だろうけど
struct outer{ struct inner; inner *ptr: struct inner{}; };
って前方宣言してあげれば良いだけで、大した手間ではない
同一コンパイル単位で前方参照できるといっても、例外は有って構わないわけで
struct hogehoge; と書くことぐらいの手間は全くの程度問題
0305デフォルトの名無しさん
2016/03/09(水) 22:23:03.30ID:gceSYQgA完ぺき主義者ではないので
仮に
「インナークラスの型のポインタ変数を前方参照っぽく定義より先に使って宣言したいときは
struct hogehoge; と事前に前方宣言しなければならない」
というルールが有ったとしても、この程度は何の手間でもないから問題ないですね
0306デフォルトの名無しさん
2016/03/09(水) 22:24:08.59ID:gceSYQgAstruct outer{ inner *ptr; inner{}; };
↓
struct outer{ inner *ptr; struct inner{}; };
struct が抜けてたわ
0307デフォルトの名無しさん
2016/03/09(水) 22:25:04.02ID:WCvUs0lbそれならそのまま使えばいいじゃないの。
何に不満があるんだよ。
0308デフォルトの名無しさん
2016/03/09(水) 22:25:25.73ID:eOjuPS6Y{
struct A{ A(){} };
struct B{ A a; int x; };
B b = B();
printf( "%d\n", b.x );
0309デフォルトの名無しさん
2016/03/09(水) 22:26:12.04ID:eOjuPS6Y0310デフォルトの名無しさん
2016/03/09(水) 22:28:49.66ID:lHuhk1uY0311デフォルトの名無しさん
2016/03/09(水) 22:30:44.15ID:av11/7D/0312デフォルトの名無しさん
2016/03/09(水) 22:32:19.48ID:WCvUs0lb0が正しいと思う。MSのバグじゃないの?
0313デフォルトの名無しさん
2016/03/09(水) 22:34:09.23ID:+X5y9V0s0が正しい。
0314デフォルトの名無しさん
2016/03/09(水) 22:35:46.14ID:+X5y9V0s0315デフォルトの名無しさん
2016/03/09(水) 22:37:39.69ID:PsUKAneXできるからやればいいじゃん
って言うのは ID:gceSYQgA が言ってること以外にも色々ある
ってまで説明しないとわからんの?
主張するのは勝手だけど、長々やるほどじゃねーだろ
って言われてるだろ
0316デフォルトの名無しさん
2016/03/09(水) 22:41:03.03ID:WCvUs0lb0317デフォルトの名無しさん
2016/03/09(水) 22:43:46.61ID:+X5y9V0szero initializeでは?
0318デフォルトの名無しさん
2016/03/09(水) 22:46:47.91ID:lHuhk1uY0319デフォルトの名無しさん
2016/03/09(水) 22:48:02.12ID:WF7rFyWlなどという仕様がどこから出てきたのか
0320デフォルトの名無しさん
2016/03/09(水) 22:49:51.34ID:+X5y9V0sだからゼロ初期化という仕様なんだって。
0321デフォルトの名無しさん
2016/03/09(水) 23:01:30.54ID:WF7rFyWl0322デフォルトの名無しさん
2016/03/09(水) 23:05:53.89ID:WCvUs0lb自分はPODのカッコ付きと勘違いした。
0323デフォルトの名無しさん
2016/03/09(水) 23:10:57.26ID:WF7rFyWl0324デフォルトの名無しさん
2016/03/10(木) 01:14:31.68ID:lKwsVgJC自分で確認するのが面倒だからって
0325デフォルトの名無しさん
2016/03/10(木) 01:44:57.86ID:eUGHchpD12.6.5のサンプル
struct C {
C(){}
A a;
const B b;
int i;
int j = 5;
};
// initializes members as follows:
// OK: calls A::A()
// error: B has no default constructor
// OK: i has indeterminate value
// OK: j has the value 5
規格書読めない初心者は発言しないように。
0326デフォルトの名無しさん
2016/03/10(木) 01:58:57.97ID:8KJ6+/BF話を読めない人は発言してもいいんですか?
0327デフォルトの名無しさん
2016/03/10(木) 02:32:53.57ID:mfhQ4lhrお前さーC++14の規格票を持ってることだけが自慢なんだろ
俺も持ってるからお前の間違い突っ込んでやるよ
0328デフォルトの名無しさん
2016/03/10(木) 02:47:23.86ID:eUGHchpDじゃ、自慢しよう
どうだ、まいったか
0329デフォルトの名無しさん
2016/03/10(木) 03:23:13.76ID:mfhQ4lhrタダだと?どこで無料で入手出来るというんだ
お前もしかしてタダで入手したのか?
0330デフォルトの名無しさん
2016/03/10(木) 03:41:17.30ID:mxNsUMFnB() で B 型のオブジェクトが値初期化 "value initialize" される。 (8.5 p11)
B はユーザー定義のデフォルトコンストラクタを持たないクラス型なので、値初期化のプロセスとして
まずゼロ初期化 "zero initialize" され、そのあとデフォルト初期化 "default initialize" される。 (8.5 p8 bullet-2)
int 型の B::x がゼロ初期化されると値 0 になる。 (8.5 p6 bullet-1)
そのあと B::x がデフォルト初期化されるが、 int 型なので何も行われず 0 のまま。 (8.5 p7 bullet-3)
と言う感じで、 C++14 の規格に従うと 0 になる。
C++03 以降だと経路が多少違うものの同じ結果になるけど、古の C++98 では B::x は不定となってしまっていた。
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#35
MSDN 見る限りだと 2013 で value initialize に対応してそうなんで、 2013 で不定ならバグかな。
https://msdn.microsoft.com/en-us/library/w7wd1177%28v=vs.110%29.aspx
https://msdn.microsoft.com/en-us/library/w7wd1177%28v=vs.120%29.aspx
0331デフォルトの名無しさん
2016/03/10(木) 10:36:48.16ID:OLUNjZSrこの仕様ってポインタに対しても有効?
以前似たような質問が議論されてたんだけど。
http://echo.2ch.net/test/read.cgi/tech/1439849418/184
0332デフォルトの名無しさん
2016/03/10(木) 11:13:34.09ID:l944yzKoでもvalue initializeルールに依存するようなクラスは書くべきじゃないなあ
http://echo.2ch.net/test/read.cgi/tech/1439849418/184
をNode node;ってやっちゃったらやっぱりnode.nodeは不定だよ
こんなコードは書かずにちゃんとコンストラクタを書いて明示的にnullptrで初期化しなくちゃいかん
0333デフォルトの名無しさん
2016/03/10(木) 11:23:42.71ID:mBEuB6lyただのバグでしかない
0334デフォルトの名無しさん
2016/03/10(木) 11:46:11.58ID:xbWf2todバグですか
gccではゼロになります
0335デフォルトの名無しさん
2016/03/10(木) 13:35:05.45ID:l944yzKo>>308のBはxの初期値が重要ならこれもバグ
0336デフォルトの名無しさん
2016/03/10(木) 18:43:26.84ID:uK8a0ubO0337デフォルトの名無しさん
2016/03/10(木) 20:58:27.62ID:l944yzKohttps://connect.microsoft.com/VisualStudio/feedback/details/746973/incorrect-c-11-value-initialization-for-type-with-implicitly-declared-but-non-trivial-default-constructor
VC++ 2015 RCでやっと直ったらしい
0338デフォルトの名無しさん
2016/03/10(木) 21:21:03.49ID:wKO6hiHF0339デフォルトの名無しさん
2016/03/10(木) 21:38:31.66ID:kxB40Mc+0340デフォルトの名無しさん
2016/03/10(木) 22:09:45.41ID:1z8FCjXU有効
using P = int *;
P p{};
はp==nullptrになる
0341デフォルトの名無しさん
2016/03/10(木) 22:59:23.79ID:XIXQ4NCN0342デフォルトの名無しさん
2016/03/11(金) 11:55:53.38ID:+X87dz7B今のところ(バグがあるので)値初期化を信じず、
未初期化を前提に書けと言うのは、ある意味正しいのかもしれないが、
考え方としては逆行しているね。
0343デフォルトの名無しさん
2016/03/11(金) 12:52:11.72ID:Y6ECzuws0初期化がデフォになってしまったらCを継承したC++の利点が薄れてしまう
value initializationこそがC++の思想に逆行してると思う
0344デフォルトの名無しさん
2016/03/11(金) 13:05:18.46ID:kWA4jyXpそもそも非POD型をメンバーに持つPOD型は非POD型になるだろ。
>http://cpplover.blogspot.jp/2010/06/c0xpod.html
>さらに、非PODな非staticデータメンバーを持たないこと。
0345デフォルトの名無しさん
2016/03/11(金) 13:10:43.94ID:vYMpLkUmうっかり未初期化の値を使うことによる不具合を防ぐって
言語思想も含まれてるでしょ。
となると、単純な値にも何らかの初期値が保証される方向性もアリかと。
初期値は保証されるが、そのことによるパフォーマンス上のペナルティがない、
プログラマが初期化すればデフォルト初期値の処理は発生しない、
という仕様なら八方丸くおさまると思ったり。
0346デフォルトの名無しさん
2016/03/11(金) 13:12:37.67ID:+X87dz7B正しいなら実装側でstack protectorなんてデフォルトにならないよ。
現状もパフォーマンスが欲しいときだけ別にするというのが基本だ。
0347デフォルトの名無しさん
2016/03/11(金) 13:13:39.58ID:2/u08KSAint a = noinit;
みたいにしたら初期化しない方式で
0348デフォルトの名無しさん
2016/03/11(金) 13:21:02.38ID:zH9xDiQdその記述方法が紛らわしいのと、規格通り実装しないのがメジャーなコンパイラの1つなのが問題
もう少し分かりやすい記述なら良いのに、現状だとデフォルトconstructorが呼ばれているようにしか見えない。
0349デフォルトの名無しさん
2016/03/11(金) 14:21:15.08ID:49om0mRFDでは
int i = void; // デフォルトの初期値を省く
コンパイラのオプションで従来動作も選べればすぐ導入可能だと思うがね
0350デフォルトの名無しさん
2016/03/11(金) 15:25:46.64ID:dykTweBsだからどうしたって話
int i{0}; とタイプすることもできないのか
0351デフォルトの名無しさん
2016/03/11(金) 15:35:13.63ID:kWA4jyXp0352デフォルトの名無しさん
2016/03/11(金) 15:36:56.24ID:kuBG6fazwhile(std::cin >> i) std::cout << i;
こんな馬鹿っぽい初期化いらんし邪魔だ
0353デフォルトの名無しさん
2016/03/11(金) 18:27:14.35ID:0EDCO8WTウソを書くな
0354デフォルトの名無しさん
2016/03/11(金) 22:49:53.55ID:YlUxysABそれは関数宣言だと何度
0355デフォルトの名無しさん
2016/03/11(金) 22:52:02.91ID:RA7SR1be0356デフォルトの名無しさん
2016/03/11(金) 22:56:28.69ID:YlUxysABその通りだけど、ゼロ初期化とは何の関係も無い件
0357デフォルトの名無しさん
2016/03/11(金) 23:02:09.89ID:4G2Dcq4h別案件でC#と数ヶ月戯れたけど
C++はやっぱり変態だと感じたわ
良くも悪くも
0358デフォルトの名無しさん
2016/03/11(金) 23:09:07.85ID:RA7SR1be0359デフォルトの名無しさん
2016/03/11(金) 23:30:50.24ID:RoKMXwVB0360デフォルトの名無しさん
2016/03/11(金) 23:31:51.83ID:+X87dz7B0361デフォルトの名無しさん
2016/03/11(金) 23:33:00.33ID:RA7SR1be0362デフォルトの名無しさん
2016/03/11(金) 23:35:30.87ID:a6R8C1/e大好き
0363デフォルトの名無しさん
2016/03/11(金) 23:36:37.63ID:+X87dz7B0364デフォルトの名無しさん
2016/03/11(金) 23:37:36.54ID:RA7SR1be0365デフォルトの名無しさん
2016/03/11(金) 23:43:00.34ID:+X87dz7B0366デフォルトの名無しさん
2016/03/11(金) 23:44:29.48ID:RA7SR1be0367デフォルトの名無しさん
2016/03/11(金) 23:53:03.42ID:YlUxysAB0368デフォルトの名無しさん
2016/03/11(金) 23:54:21.02ID:RA7SR1be0369デフォルトの名無しさん
2016/03/12(土) 00:03:43.97ID:z2WBnFu00370デフォルトの名無しさん
2016/03/12(土) 00:35:06.18ID:FH3bqKTZっていう無知と思い込みから汚いコード書いて無駄に苦労してる人は珍しくないぞ
0371デフォルトの名無しさん
2016/03/12(土) 01:39:29.17ID:Zbyfy48z0372デフォルトの名無しさん
2016/03/12(土) 01:43:01.42ID:Pl4Qm8o2class IContainer {
};
class Ifold {
virtual do(IContainer& container) const = 0;
};
class VectorContainer : public IContainer {
private:
std::vector<double> container_;
};
みたいな感じでIfoldのインターフェースはコンテナに依存しないようにしたいです。
visitorパターンにするとIContainerに、Ifoldの具象クラスのacceptメソッドが増えていくのが…。
何かうまい実装はありませんでしょうか?
0373デフォルトの名無しさん
2016/03/12(土) 02:13:17.49ID:VClvi+pBIfoldの具象型がIContanerの具象データに依存してるって事?
上位型だけでやりとりしたいなら、IfoldかIContainerどっちでも良いが、
具象型の中でダウンキャストでもすればいいだろ。
0374デフォルトの名無しさん
2016/03/12(土) 02:16:35.39ID:VClvi+pBbool supports(IContainer&) (またはIfold&)とか付ける。
それ以外思いつかないが、そういうことじゃない?
0375デフォルトの名無しさん
2016/03/12(土) 02:18:19.39ID:Pl4Qm8o2Ifoldの具象型がIContainerの具象型が中で持ってるデータ構造に依存するのはOKです
ダウンキャストというと、どのように行えばいいですか?
インターフェースクラスからは具象クラスがわからないため何にダウンキャストすればいいか決定できません…
0376デフォルトの名無しさん
2016/03/12(土) 02:19:31.10ID:Pl4Qm8o2すみません、具体的にどのような実装になるかイメージができません…
0377デフォルトの名無しさん
2016/03/12(土) 02:21:31.37ID:VClvi+pBいまいち要領を得ないが、具象クラスにdo(IContainer& x);を実装、
中でIContainerからVectorContainerなどにキャストすれば良いんじゃないのか?
これ以上は何がしたいのかよくわからないから何とも言えん。
0378デフォルトの名無しさん
2016/03/12(土) 02:42:31.41ID:VClvi+pB受け取るべき具象コンテナが決まってないって事か?
それもう設計破綻してるから無理だろ。
そうではなく特定型にキャスト可能かわからないってだけなら、
自分でID付けてis_a(int id)とか実装して調べるか、dynamic_cast。
0379デフォルトの名無しさん
2016/03/12(土) 02:51:53.53ID:9NhLr4qtclass IContainer {
virtual double& at(int index)=0;
virtual void push_back(double& v)=0;
};
0380デフォルトの名無しさん
2016/03/12(土) 09:19:37.98ID:Vp+P3H45std::accumulateみたいなことがしたいように見受けられるけどそうかね?
0381デフォルトの名無しさん
2016/03/12(土) 09:54:48.36ID:fbT4KBM6IContainerを受け取るIStackに魔界造したイメージだろうきっと
0382デフォルトの名無しさん
2016/03/12(土) 11:36:06.87ID:oS3fCNyNvisitorはfoldの仕方が変わるからaccept必要でしょ?
0383デフォルトの名無しさん
2016/03/12(土) 13:19:48.43ID:VClvi+pBテンプレート使うならStrategyだけで済んじゃうし。
0384デフォルトの名無しさん
2016/03/14(月) 22:12:09.15ID:bYJAKtH40385デフォルトの名無しさん
2016/03/15(火) 18:46:33.79ID:7F6lH4i+具象クラスであるvisitor(ユーザーコード)に依存してしまうという問題を解決したかったのですが、いまいち伝わらなかったみたいです。
>>378
型タグによるダウンキャストは、メンテの観点から採用できません...
>>382
自分がなにを抽象化したいのか再考するきっかけになりました。
ありがとうございました。
結局visitorを内部のコンテナ型に依存するインターフェースクラスとすることで解決しました。
実際にはIVectorContainerとかIListContainerのような形にしました。
正確にはvalue_typeは決まってたのでテンプレートテンプレートパラメータを使いました。
0386デフォルトの名無しさん
2016/03/15(火) 20:37:53.71ID:drELySkeダウンキャストの方が見えてる分まだマシかと。
0387デフォルトの名無しさん
2016/03/15(火) 20:46:48.46ID:7F6lH4i+ダウンキャストだとコンテナ型が増えるたびにif文を追加しなくてはならず、
しかも追加し忘れてもコンパイル時にエラーが出ないので…
0388デフォルトの名無しさん
2016/03/15(火) 20:51:40.14ID:drELySkeまたわけわからん事言っとるね君。
テンプレートだろうが、結局特定のコンテナのインターフェースに依存するだから、
その部分は場合分けしなきゃならんでしょ。
0389デフォルトの名無しさん
2016/03/15(火) 20:54:05.87ID:7F6lH4i+いや、それはaccept側のオーバーライドで解決します
これがvisitorパターンの一般的な実装かと思いますが、どこがわかりませんか?
0390デフォルトの名無しさん
2016/03/15(火) 21:12:36.21ID:drELySkeうむわけわからんよ。
どうやってacceptのオーバーライドで別種のvisitorを分ける?
そもそもテンプレート型に仮想関数付ける形こそ始末が悪くメンテしにくいのだから、
それならいっそインターフェースも消して、
テンプレートの構造的部分型だけで十分だと思うんだが。
0391デフォルトの名無しさん
2016/03/15(火) 21:13:54.39ID:7F6lH4i+家に帰ったら実装書きます
0392デフォルトの名無しさん
2016/03/15(火) 22:59:29.47ID:7F6lH4i+こういうことです
https://ideone.com/JpA22R
これダウンキャストで実装すると、acceptを一つにまとめてif文で一つずつキャストを試すわけですよね?
その場合ConcreteXxxContainerがひとつ増えるとacceptを修正し忘れてもコンパイルが通ってしまって困ります
0393デフォルトの名無しさん
2016/03/15(火) 23:00:15.31ID:18/5NGhU0394デフォルトの名無しさん
2016/03/15(火) 23:01:00.99ID:7F6lH4i+という風にしました
0395デフォルトの名無しさん
2016/03/15(火) 23:04:19.56ID:z48QWO4Qコード書かせちゃダメなレベル
0396デフォルトの名無しさん
2016/03/15(火) 23:11:15.71ID:18/5NGhU申し訳
0397デフォルトの名無しさん
2016/03/15(火) 23:48:10.07ID:L3nufqExそもそもVisitorパターンが本当に適切なのか?
Visitorパターンみたいな汚くなりがちなものはなるべく避けるべきだと思うが
0398デフォルトの名無しさん
2016/03/16(水) 06:31:57.64ID:+XU07v9Bなんだオーバーライドじゃなくてオーバーロードじゃないの。
静的なのがいいなら構造部分型や標準コンテナの模倣で十分だろう。
そこまでしてインターフェースとVisitorに拘る理由は何?
>>395
dynamic_castなら危険でも何でもない。
そうやってダウンキャストを危険危険と、
いちいち大げさに騒ぎ立てる方がアホというか初心者だな。
実際OOPなら多くの場所で使われてるし、設計が簡単になるなら使っても良いんだよ。
0399デフォルトの名無しさん
2016/03/16(水) 06:42:44.25ID:+XU07v9Bそれぞれ別の名前にしたほうがより安全確実だからね。馬鹿みたいだけど。
0400デフォルトの名無しさん
2016/03/16(水) 07:47:22.56ID:Jbc4KVVa0401デフォルトの名無しさん
2016/03/16(水) 11:05:22.41ID:9QBMlTeC> そうやってダウンキャストを危険危険と
個人的には「ダウンキャスト」っていう用語自体がアホ
アップ/ダウンの概念を不用意に持ち込んだ初心者ワードだと思う
暗黙の型変換(implicit conversion)
キャスト演算[明示的な型変換(explicit conversion)
後者を単にキャストと呼ぶのがC/C++の文化
0402デフォルトの名無しさん
2016/03/16(水) 12:20:06.84ID:hEm8Gz+Aお前のルールをさも普遍的なものであるかのように語られても
0403デフォルトの名無しさん
2016/03/16(水) 15:13:44.46ID:YWKSC+YR0404デフォルトの名無しさん
2016/03/16(水) 17:05:09.47ID:noSrSdLM0405デフォルトの名無しさん
2016/03/16(水) 17:32:24.76ID:P1US5avIまさかとは思うがローカル変数の参照を返したりしてないよな?
0406デフォルトの名無しさん
2016/03/16(水) 17:34:09.97ID:bCkVw2Gt返すこともありますが
参照が有効か無効かは問題にしてません
0407デフォルトの名無しさん
2016/03/16(水) 17:35:54.73ID:P1US5avI0408デフォルトの名無しさん
2016/03/16(水) 18:42:01.29ID:Sre9WvB00409デフォルトの名無しさん
2016/03/16(水) 20:48:14.54ID:Zxg3aYLUそれダウンキャストと何の関係もない話だよね?
0410デフォルトの名無しさん
2016/03/16(水) 21:09:39.81ID:8e8fbPBE律儀に規格用語だけ使って話すのと
アホかどうかは関係ねえぞ
おまえが体現しているようにw
0411デフォルトの名無しさん
2016/03/16(水) 21:20:12.09ID:ejdJRW9Zこれ意味不明だな
オーバーロードは静的なのに
0412デフォルトの名無しさん
2016/03/16(水) 21:42:57.82ID:+XU07v9Bオーバーロードに型チェックはあるが、
ユーザー定義変換のように、使用者側から見れば暗黙に見える変換が起きうるぞ。
なので確実なチェックが欲しいなら一つずつ名前を付けた方が良い。
どうだ馬鹿みたいだろう?
0413デフォルトの名無しさん
2016/03/16(水) 21:51:19.58ID:noSrSdLM0414デフォルトの名無しさん
2016/03/16(水) 21:53:11.55ID:8e8fbPBE0415デフォルトの名無しさん
2016/03/16(水) 21:56:22.65ID:9IPG0ZaQじゃないと比較のしようがない
0416デフォルトの名無しさん
2016/03/16(水) 22:14:17.92ID:Sre9WvB00417デフォルトの名無しさん
2016/03/17(木) 08:31:39.81ID:yET/+Bsj> 変換が起きうるぞ。
意味わからん
具体例プリーズ
0418デフォルトの名無しさん
2016/03/17(木) 10:21:34.32ID:mXayW7+hあんま触るな
コード出さない時点で誰かわかるだろ
0419デフォルトの名無しさん
2016/03/17(木) 12:44:04.09ID:Mb/PAzMmdynamic_castとは別物
0420デフォルトの名無しさん
2016/03/17(木) 21:19:25.81ID:Nqbbnzs6error: cannot convert 'bool' to 'boolean' for argument '2' to 'int jpeg_read_header(j_decompress_ptr, boolean)'
jpeg_read_header(&cinfo, true);
エラーをみて思ったんだが、bool 型と boolean 型の違いって何なんだろ?
0421デフォルトの名無しさん
2016/03/17(木) 21:27:52.26ID:3douJvdzvoid func( std::string );
func( "filename" ); ← 1
1.大丈夫だが、func( char* )ではないし、std::stringの構築が行われている
のやつ言ってるんじゃない?
ユーザ定義変換と書いてあるし
0422デフォルトの名無しさん
2016/03/17(木) 21:36:57.43ID:1OZ8wjSnそんなに手間じゃないやろ
0423デフォルトの名無しさん
2016/03/17(木) 21:44:32.93ID:K9pRNqs8コードの該当箇所見た?
0424デフォルトの名無しさん
2016/03/17(木) 22:09:31.51ID:Nqbbnzs6(boolean) tureでコンパイルは通る。
Cにはbool型は無いんだな。
0425デフォルトの名無しさん
2016/03/17(木) 22:12:09.48ID:K9pRNqs80426片山博文MZ ◆T6xkBnTXz7B0
2016/03/17(木) 22:20:29.77ID:ucqcC/SU0427デフォルトの名無しさん
2016/03/17(木) 22:38:53.07ID:rjBvJtG90428デフォルトの名無しさん
2016/03/17(木) 22:40:27.06ID:ucqcC/SU0429デフォルトの名無しさん
2016/03/17(木) 22:41:49.16ID:ucqcC/SU0430デフォルトの名無しさん
2016/03/17(木) 22:42:41.64ID:JPCzu/ni0431デフォルトの名無しさん
2016/03/17(木) 23:12:37.74ID:/lOxP0ETでそれって
> なので確実なチェックが欲しいなら一つずつ名前を付けた
で解決できるんか?
0432デフォルトの名無しさん
2016/03/17(木) 23:19:50.72ID:dAtTnfZRということだろう
f_char(""); //OK
f_string(""); //きっと誤り
0433デフォルトの名無しさん
2016/03/18(金) 00:31:37.54ID:bZVTun5zC言語はスレ違いだがC99から_Boolという型がある
stdbool.hをincludeしたらboolも定義される
0434デフォルトの名無しさん
2016/03/18(金) 05:07:52.40ID:bw5Y7I/7実行時効率以外に何の理由があってC++なんぞ使うのか
0435デフォルトの名無しさん
2016/03/18(金) 06:23:08.41ID:bw5Y7I/70436片山博文MZ ◆T6xkBnTXz7B0
2016/03/18(金) 06:47:57.93ID:Ap+aghgXこの世のものとも思えない複雑怪奇
ビルド時間がReactOSよりも長いと来てる
0437デフォルトの名無しさん
2016/03/18(金) 13:00:52.70ID:RPKOB45DWrapper<WrapperTest>(env, thisj).destroy();
});
↑このコードの[=] () {〜}ってどういう意味?
0438デフォルトの名無しさん
2016/03/18(金) 13:08:35.67ID:W5j8+q1I0439デフォルトの名無しさん
2016/03/18(金) 13:57:19.97ID:Kcr5mRax0440デフォルトの名無しさん
2016/03/18(金) 15:44:12.24ID:InA5se8Z「C++ ラムダ式」で検索するのが第一歩。
>>438 は正確なのだろうけど、英語というハードルの高低が人により…。
0441デフォルトの名無しさん
2016/03/18(金) 16:01:29.94ID:HFSK+zOK!?
0442デフォルトの名無しさん
2016/03/18(金) 16:16:31.96ID:410UcNdt0443デフォルトの名無しさん
2016/03/18(金) 16:29:45.63ID:FVNcSrUO0445デフォルトの名無しさん
2016/03/18(金) 19:11:24.91ID:oTJE6YWd0446デフォルトの名無しさん
2016/03/18(金) 19:44:50.08ID:UMQZP4zp0447デフォルトの名無しさん
2016/03/18(金) 20:18:38.69ID:vJhS3HXJ0448デフォルトの名無しさん
2016/03/18(金) 21:20:10.79ID:gDAbGK2s実際 operator==() を定義しないままで動いているようですが,気持ち悪いです.
よろしくお願いいたします.
0449デフォルトの名無しさん
2016/03/18(金) 21:30:29.40ID:FKb875f60450デフォルトの名無しさん
2016/03/18(金) 22:06:18.03ID:vhFEV+GW0451デフォルトの名無しさん
2016/03/18(金) 22:08:14.37ID:oKqsBnC/0452デフォルトの名無しさん
2016/03/18(金) 22:19:30.53ID:vhFEV+GWそんな話はじめて聞いた。
operator<()か、mapのテンプレートパラメータで適切な比較関数を指定するか、のどちらかやっとけば問題ないはず。
0453デフォルトの名無しさん
2016/03/18(金) 22:20:00.80ID:jzV+DAcw0454デフォルトの名無しさん
2016/03/18(金) 23:38:29.84ID:BXTY6QO10455デフォルトの名無しさん
2016/03/18(金) 23:41:49.45ID:fdaB6v5T0456454
2016/03/19(土) 01:01:05.43ID:09FPc+ytそれだと起動した時のメモリ使用量がスゴイことになりませんか?
jarみたいにできたらいいのですが…
0458デフォルトの名無しさん
2016/03/19(土) 02:01:48.98ID:ojXVuQaHメモリを気にするってことは
PCなら数百MBを越え、でかいときには楽に1GB越えるサイズかな。
ひょっとしたらターゲットが組み込みマイコンで小メモリなのかな
0459デフォルトの名無しさん
2016/03/19(土) 04:25:33.28ID:A8zNJX4oリソースに追加
0460デフォルトの名無しさん
2016/03/19(土) 05:34:50.36ID:u4PbgbYy0461デフォルトの名無しさん
2016/03/19(土) 06:22:04.15ID:aVqCTfNk> 組み込みなら好きな場所にファイルを書き込める
意味わからん
今時 Linux や Windows Embedded 使ってる組み込みなんていくらでもあるのに
0462デフォルトの名無しさん
2016/03/19(土) 07:17:32.18ID:fKG0+8DgWindows + Visual Studio ならリソースに突っ込むのが一番簡単
でもゲーム開発とかなら別個にパックするファイルを用意した方がいい
0463デフォルトの名無しさん
2016/03/19(土) 09:27:46.68ID:oD5CZDwRなんで operator<() だけでいいのでしょうか?
0464デフォルトの名無しさん
2016/03/19(土) 09:32:44.77ID:i3aw7Uuy0465デフォルトの名無しさん
2016/03/19(土) 09:59:57.29ID:tKkEJPlU順序づけ(要はsort)の条件を指定するのに==では足りないだろう。
0466デフォルトの名無しさん
2016/03/19(土) 10:18:49.25ID:i3aw7Uuy0467デフォルトの名無しさん
2016/03/19(土) 10:28:37.96ID:/R8BseZfoperator<があれば同値判定も出来るからというのが本当の答え
!(a<b) && !(b<a)ならa==b
0468デフォルトの名無しさん
2016/03/19(土) 10:42:20.95ID:oD5CZDwRありがとうございます.
0469デフォルトの名無しさん
2016/03/19(土) 11:56:29.54ID:i3aw7Uuyどうしてそう息を吸ってはくような嘘をつくのか
0470デフォルトの名無しさん
2016/03/19(土) 12:07:33.31ID:i3aw7Uuy勘違いした失礼>>467
0471デフォルトの名無しさん
2016/03/19(土) 12:33:51.72ID:P4VbUWO20472デフォルトの名無しさん
2016/03/19(土) 14:29:27.12ID:SYQTFOu+0473デフォルトの名無しさん
2016/03/19(土) 14:53:53.05ID:g1UHnDq80474デフォルトの名無しさん
2016/03/19(土) 15:06:03.88ID:4a76PkUY#define STR(head ,name) head ## name
#define MAKE(...) \
typedef enum _ENUM{ \
STR(ENUM_,__VA_ARGS__ ),ENUM_Num \
} ENUM; \
const char *Name[ENUM_Num] ={ #__VA_ARGS__ };
というマクロで
MAKE(one,two,three)
とすると、本来はENUM_one ENUM_two ENUM_three というenumの要素が得られるはずなのに、
なぜか生成されるのはENUM_one two threeの三つになってしまいます。
Visual Studio 2015 CommunityのIntelisenceでのエラーなのですが、
これは本来は予期している結果が得られているのでしょうか?
それともこいつが言うように実際は後者のような宣言になっているのでしょうか?
0475デフォルトの名無しさん
2016/03/19(土) 15:37:01.96ID:4a76PkUYすみません。ものすごい馬鹿な勘違いをしていました。__VA_ARGSは,も含めてそのまま放り込む
ためのものなんですね。
0476デフォルトの名無しさん
2016/03/19(土) 15:37:46.60ID:4a76PkUYどうやって組めばいいのでしょう?
0477デフォルトの名無しさん
2016/03/19(土) 15:54:23.67ID:ni3uOtuZhttps://www.google.co.jp/search?q=boost+preprocessor
BOOST_PP_SEQ_〜 を使えば MAKE((one)(two)(three)) でいけるはず。
0478デフォルトの名無しさん
2016/03/19(土) 15:57:26.06ID:ni3uOtuZいまは MAKE(one,two,three) でもいけそう。
http://d.hatena.ne.jp/DigitalGhost/20111205/1323052916
0479デフォルトの名無しさん
2016/03/19(土) 19:11:04.92ID:4a76PkUY私はboostを全く知らなかったのですが、今入れてきました。
しかしいまいちよくわかったいないので、どうかboost/preprocessorを使った
プログラムをご教授願えませんでしょうか?
0480デフォルトの名無しさん
2016/03/19(土) 19:48:34.76ID:4a76PkUY(a ,b , c)の引数に対して、
enum{
ENUM_a,
ENUM_b,
ENUM_c,
ENUM_Num
}
が生成できれば締め切りに間に合うのです!
どなたかお願いします!
0481デフォルトの名無しさん
2016/03/19(土) 20:06:06.20ID:SYQTFOu+2ch新参の人がいるぞ! 囲め!
0482デフォルトの名無しさん
2016/03/19(土) 20:13:11.30ID:cIZsYOxL0483デフォルトの名無しさん
2016/03/19(土) 20:59:41.54ID:5djHDgqa文字列化演算子・トークン連結演算子
0484デフォルトの名無しさん
2016/03/19(土) 21:05:44.25ID:4a76PkUYenum{
ENUM_ ## __VA_ARGS__,
ENUM_Num
}
としても
enum{
ENUM_a,b,c,
ENUM_Num
}
になっちゃいます
0485デフォルトの名無しさん
2016/03/19(土) 21:35:28.30ID:IPOoQOnL0486デフォルトの名無しさん
2016/03/19(土) 21:51:12.72ID:VQqTJbFl#define SELECT4(d1, d2, d3, d4, name, ...) name
#define MAKE_ENUM(...) SELECT4(__VA_ARGS__, MAKE_ENUM_4, MAKE_ENUM_3, MAKE_ENUM_2, MAKE_ENUM_1)(__VA_ARGS__)
#define MAKE_ENUM_1(key) ENUM_ ## key
#define MAKE_ENUM_2(key, ...) ENUM_ ## key, MAKE_ENUM_1(__VA_ARGS__)
#define MAKE_ENUM_3(key, ...) ENUM_ ## key, MAKE_ENUM_2(__VA_ARGS__)
#define MAKE_ENUM_4(key, ...) ENUM_ ## key, MAKE_ENUM_3(__VA_ARGS__)
#define MAKE(...) \
typedef enum _ENUM{ \
MAKE_ENUM(__VA_ARGS__), ENUM_Num \
} ENUM; \
//const char *Name[ENUM_Num] ={ #__VA_ARGS__ };
0487デフォルトの名無しさん
2016/03/19(土) 22:03:39.89ID:4a76PkUY恐らく本格的なプリプロセッサを組まれる方は任意引数でやっているだろうなぁ
とは思いますが、自分の力量にしたがいます。
0488デフォルトの名無しさん
2016/03/20(日) 01:20:47.66ID:3h/wnv4Vプリプロセッサでループや再帰(的処理)を行うには何らかの形で
作者が想定した処理できる限界の数だけのマクロをベタ書きで用意するしかない
事前の用意不要で任意の数をループや再帰で処理するのは元より不可能
0489デフォルトの名無しさん
2016/03/20(日) 01:24:49.08ID:YNMOH2/p0490デフォルトの名無しさん
2016/03/20(日) 02:24:48.46ID:yN6fzEfa0491デフォルトの名無しさん
2016/03/20(日) 02:26:06.45ID:yN6fzEfa0492デフォルトの名無しさん
2016/03/20(日) 04:59:40.07ID:wXobkPts0493デフォルトの名無しさん
2016/03/20(日) 09:05:43.61ID:9j4drtjChttp://www.geocities.jp/rage2050a/rEnumStr/rEnumStr.html
0494デフォルトの名無しさん
2016/03/20(日) 09:29:08.28ID:9j4drtjChttp://www.gamedev.net/page/resources/_/technical/apis-and-tools/maintenance-free-enum-to-string-in-pure-c-with-better-enums-r4230
数の制限はやっぱりベタ書きでなんとかしなくちゃいけないけどね
0495デフォルトの名無しさん
2016/03/20(日) 14:17:44.97ID:Q9e0J8ZEこいつは例えばあるマクロ関数「FUNC」があったとして、
再帰の回数分だけFUNC_1 FUNC_2…と作り出す機能がある。
あなたが求める機能は、もし再帰的に書けるなら
MAKE_ENUM_ITER(key, ...) ENUM_ ## key, MAKE_ENUM_ITER(__VA_ARGS__)
のように書けばいいわけだから、
後はわかるだろ?
0496デフォルトの名無しさん
2016/03/20(日) 14:19:27.99ID:Q9e0J8ZE0497デフォルトの名無しさん
2016/03/20(日) 15:57:09.34ID:NZgllOnE> 再帰の回数分だけ
をどうマクロで処理してるかわかってる?
設計としては再帰の回数を管理するカウンタ用のマクロを例えば
COUNT_10,COUNT_9,...と必要な数だけベタ書きで用意して処理に使っているので
あらかじめ用意されてるカウンタ用マクロの数を越える任意の回数の再帰を扱えるわけではない
0498デフォルトの名無しさん
2016/03/20(日) 16:04:24.63ID:Q9e0J8ZEFUNCを何回再帰させるかを指定してBOOST_PP系統のマクロを定義すると、
FUNC_nという形になる名前の任意のマクロのうち、まだ定義されていない
名前のマクロを探し出して再帰的にFUNC_nを命名する機能を持っているのだ
>>486のやっているベタ書きを自動的に書いてくれるのだ
0499デフォルトの名無しさん
2016/03/20(日) 18:31:41.32ID:EqMhetHDboost/preprocessor/repetition/repeat.hpp
の中身見たことある?
0500デフォルトの名無しさん
2016/03/23(水) 01:48:29.48ID:ja7H/O1JA=A+1
って式を認めよう
この場合のイコールは代入を意味するんだな
そこで質問です
A+1=A
って書いたらどーなるの?
A=A-1
と同じ結果が得られるの?
教えてー
0501デフォルトの名無しさん
2016/03/23(水) 01:49:27.42ID:90Oe+hOcコンパイルエラーになるだけです
0502デフォルトの名無しさん
2016/03/23(水) 01:50:09.88ID:ja7H/O1Jそっか・・・
あんまり論理的ではないのねorz
0503デフォルトの名無しさん
2016/03/23(水) 02:17:41.55ID:d4s8z5nU0504デフォルトの名無しさん
2016/03/23(水) 02:24:07.46ID:SoMbpeP60505デフォルトの名無しさん
2016/03/23(水) 02:53:49.93ID:YLhrJ5ltおまいはエジソンかよw
0506デフォルトの名無しさん
2016/03/23(水) 03:41:34.03ID:ti1fSBNM0507デフォルトの名無しさん
2016/03/23(水) 05:12:04.79ID:YLhrJ5ltエジソンは>>500ね
0508デフォルトの名無しさん
2016/03/23(水) 05:55:27.03ID:uWb5tpCC(コンパイラ絡みの話題なので若干スレチかもしれませんが、このスレが一番詳しい人が多いと思いますのでご容赦ください)
stringやlistなどはc++11でABIが変更になったと聞きますが、これの挙動がgccとclangで違うことを最近知りました。
たとえば以下のコードをビルド(g++ 5.2.0とclang++ 3.7.1)して nm --demangle コマンドでシンボルを見てみると、
$ cat hoge.h
#include <list>
using namespace std;
struct hoge {
list<int> get_list(list<int>);
list<int> get_list();
};
$ cat hoge.cpp
#include "hoge.h"
list<int> hoge::get_list(list<int>) {return list<int>();}
list<int> hoge::get_list() {return list<int>();}
引数のある関数get_list(list<int>)のシンボルはg++、clang++ともに
hoge::set_list(std::__cxx11::list<int, std::allocator<int> >)
ですが、引数のない関数get_list()のシンボルはg++だと hoge::get_list[abi:cxx11]() 、
clang++だと hoge::get_list() でした。
この違いのせいでg++でビルドしたライブラリをclang++のプロジェクトで使うことができません。
やむなく -D_GLIBCXX_USE_CXX11_ABI=0 オプションを付けてビルドし直したのですが
これだとC++11でもたらされた効率化の恩恵が受けられないですよね?
何か上手い方法はないでしょうか?(clangが対応するのを待つしかない・・・?)
# なお、ライブラリのほうをg++でなくclang++でビルドしろというのはなしでお願いします
0509デフォルトの名無しさん
2016/03/23(水) 06:01:35.89ID:LEkWD+7Jstruct B
{
B& operator + (int) { return *this; }
B& operator - (int) { return *this; }
B& operator = (B&) = default;
};
B A;
A=A+1;
A+1=A;
A=A-1;
0510デフォルトの名無しさん
2016/03/23(水) 10:12:52.17ID:COygSTBIstd::string s;
};
hogeのムーブコンストラクタはどう書くのが正しいですか
0511デフォルトの名無しさん
2016/03/23(水) 10:29:58.57ID:YLhrJ5ltすべてAになるとかエジソンコードかコレw
0512デフォルトの名無しさん
2016/03/23(水) 10:31:56.68ID:LEkWD+7Jstruct hoge { virtual void hage() { } };
struct fuga : hoge { void hage() { } };
void (hoge::*hogo)() = &hoge::hage;
fuga hege;
(hege.*hogo)(); //fuga::hageじゃなくhoge::hageにしたい
0513デフォルトの名無しさん
2016/03/23(水) 10:56:19.75ID:GrZPafJv出来ない
0514デフォルトの名無しさん
2016/03/23(水) 11:01:24.81ID:d4s8z5nU0515デフォルトの名無しさん
2016/03/23(水) 14:32:18.80ID:LEkWD+7Jthx
情報密度の高いわずか4文字、その次の真空とは格段に違いますね。
0516デフォルトの名無しさん
2016/03/24(木) 00:36:19.09ID:CsN4wd4t今日若いもんに指摘されたんだけども
make_hogehogeとか書いたほうがよいのでしょうか?
老害脱却してナウくてミニマルなコード書きたい
0517デフォルトの名無しさん
2016/03/24(木) 00:41:36.09ID:9Xk0G6q+というか指摘されたときにちゃんと理由聞いとけよ
0518デフォルトの名無しさん
2016/03/24(木) 01:42:21.09ID:019JwaRF0519デフォルトの名無しさん
2016/03/24(木) 02:15:40.78ID:lQwaLUOO上段より下段が時系列的に後
右辺より左辺が時系列的に後
そんなカスケード的概念が根底にある
BASICに行番号が有った頃と何も変わらない
左辺が変数のみなら代入を意味する
左辺が数式なら数式と扱う
どの辺がオブジェクト指向か知らない
ポリモーフィズムとかカプセル化も関係ない
多分、生物は前を向く、みたいな本能に根差した定義が隠れている
0520デフォルトの名無しさん
2016/03/24(木) 08:13:12.75ID:xZz5tDVg>左辺が数式なら数式と扱う
という妄想でした
(c1 ? gr() : fr()) = 100 ;
0521デフォルトの名無しさん
2016/03/24(木) 08:24:49.44ID:Nz54sUCC*pt = 100;
でしょ
A=100;のAもC++では左辺値という式で
変数とか数式とかいう言葉遣いは行番号BASICの話だろ
0522デフォルトの名無しさん
2016/03/24(木) 08:47:03.11ID:RWWxbY4pスマートポインタを調べておいで
0523デフォルトの名無しさん
2016/03/24(木) 08:50:35.73ID:4NO08lYx0524デフォルトの名無しさん
2016/03/24(木) 09:04:10.19ID:wWfOqsS1謎である
0525デフォルトの名無しさん
2016/03/24(木) 11:15:22.83ID:biS/7wG30526デフォルトの名無しさん
2016/03/24(木) 11:17:02.82ID:biS/7wG30527デフォルトの名無しさん
2016/03/24(木) 12:08:43.62ID:ZS8UeVhQそう書く以上ある程度は知ってるんでしょ?
まず使ってみて判断すりゃいい。
0528デフォルトの名無しさん
2016/03/24(木) 14:24:41.64ID:aFiY6vgpちょっと記述が長いくらい?
0529デフォルトの名無しさん
2016/03/24(木) 15:53:26.47ID:eZePobDJ0530デフォルトの名無しさん
2016/03/24(木) 16:10:53.13ID:aFiY6vgpもしC++の開発当初からスマポの概念が存在してたとしたら
もうちょっとシンプルなキーワードになってたのかなと思わなくはない
0531デフォルトの名無しさん
2016/03/24(木) 16:32:37.90ID:5JBRPHnG0532デフォルトの名無しさん
2016/03/24(木) 16:40:18.89ID:YciTCaLRファイルを次々読んでいくと不正落ちするんだが
タスクマネージャを見る限りメモリリークはしてないっぽいんだが
原因はなんだろう?
エスパーさん助けて
0533デフォルトの名無しさん
2016/03/24(木) 16:47:29.18ID:YnxOCposフツーにVC++でデバッグしろや
0534デフォルトの名無しさん
2016/03/24(木) 16:56:15.84ID:aFiY6vgpあくまで宣言時の話ね
安全かどうかはとりあえず置いとく
0535デフォルトの名無しさん
2016/03/24(木) 17:11:05.46ID:YciTCaLRそういやそうやね
デバッグしたときの思い出したけどメモリのアクセスの違反とかやったかな
ただどこのメモリアクセスかだとかてんで絞り込めなかった記憶が蘇ってきた
0536デフォルトの名無しさん
2016/03/24(木) 17:11:55.85ID:bJRa7hQW0537デフォルトの名無しさん
2016/03/24(木) 18:19:30.58ID:GuX4g1Aqint x, y;
POINT(int x, int y){
this.x = x;
this.y = y;
}
};
式にはクラス型が必要です。とエラー出る。
Javaだとこの書き方で来たと思うんだけどどうれば?
0538デフォルトの名無しさん
2016/03/24(木) 18:20:23.26ID:HU0hrWcK↓
this->x
0539デフォルトの名無しさん
2016/03/24(木) 19:05:20.17ID:4ybpt3lE0540デフォルトの名無しさん
2016/03/24(木) 19:16:58.07ID:xZz5tDVg0541デフォルトの名無しさん
2016/03/24(木) 19:17:43.17ID:CKYJRfTxclass POINT{
int x_, y_;
POINT(int x, int y)
: x_(x), y_(y)
{}
};
0542デフォルトの名無しさん
2016/03/24(木) 22:26:04.65ID:zkjgNnUp0543デフォルトの名無しさん
2016/03/24(木) 22:39:30.65ID:f7qbbkg+class POINT{
int x_, y_;
public:
POINT(int x, int y)
: x_(x), y_(y)
{}
};
0544デフォルトの名無しさん
2016/03/24(木) 23:04:36.81ID:3G6+DDFHstruct hoge{
std::string s;
hoge() = default;
hoge(hoge &&) = default;
hoge(hoge const &) = default;
};
struct hoge{
std::string s;
hoge(hoge &&baka) : s{std::move(baka.s)} {}
};
0545デフォルトの名無しさん
2016/03/24(木) 23:49:09.31ID:zWmpvvy2clangやgccならAddressSanitizerでバッファーオーバーフローしたタイミングで止めてコールスタックを表示できるし、
解放済みメモリへアクセスしたときもそのアドレスを解放した箇所のコールスタック表示できる。
0546デフォルトの名無しさん
2016/03/25(金) 00:38:22.72ID:+Ze54dShOpenGLの使い方間違え落ちると呼び出し元がわからんことが多いし。
0547デフォルトの名無しさん
2016/03/25(金) 00:52:21.56ID:UpbiIEYUclass POINT{
int x, y;
POINT(int x_, int y_)
: x(x_), y(y_) {}
};
だろ
0548デフォルトの名無しさん
2016/03/25(金) 00:53:38.91ID:UpbiIEYUていうか
class POINT{
public:
int x, y;
POINT(int x_, int y_)
: x(x_), y(y_) {}
};
しておかないとコンストラクタ呼べんよ
0549デフォルトの名無しさん
2016/03/25(金) 00:58:19.08ID:BMGk8TKa0550デフォルトの名無しさん
2016/03/25(金) 01:05:01.92ID:UpbiIEYU0551デフォルトの名無しさん
2016/03/25(金) 01:09:41.99ID:OQH/xHTw0552デフォルトの名無しさん
2016/03/25(金) 01:16:51.01ID:ea+R8FSN0553デフォルトの名無しさん
2016/03/25(金) 02:09:13.34ID:9WnSpcyZメンバ変数は前アンダースコア、引数にはアンダースコア付けないで落ち着いた
後ろアンダースコアって何であんなにカッコ悪いんだろ?m_よりはマシだと思うが
0554デフォルトの名無しさん
2016/03/25(金) 02:58:29.24ID:7ath5rIcどれが流行ってるとか一般的にどうあるべきとかいう一般論あるの?
0555デフォルトの名無しさん
2016/03/25(金) 03:08:18.87ID:cXdBDF9l0556デフォルトの名無しさん
2016/03/25(金) 03:11:49.84ID:UodAUCRUコーディング規約を守るために努力すんのは無駄極まりないからGoogleの規約基準にしていいと思うけど
さすがにiとかbは消えたけどm_とg_はたまに見かける
0557デフォルトの名無しさん
2016/03/25(金) 03:19:28.56ID:9WnSpcyZ規格ちゃんと読んだか?
前アンダースコアが予約されてる条件を理解してるか?
メンバ変数の前アンダースコアは合法だってことを知ってるか?
0558デフォルトの名無しさん
2016/03/25(金) 03:58:43.82ID:F3D1y9dC0559デフォルトの名無しさん
2016/03/25(金) 04:05:28.83ID:cXdBDF9lマクロはCの制約を適用しなければいけない
必然的に前アンダーは使ってはいけない
0560デフォルトの名無しさん
2016/03/25(金) 04:16:26.20ID:9WnSpcyZ規格を見るのが一番だが、この辺りでも見て自分の頭で考えてね
https://msdn.microsoft.com/ja-jp/library/cc440188%28v=vs.71%29.aspx
_大文字始まりは主にマクロのために全てのスコープで予約されてるが、_小文字始まりはグローバルスコープ以外では合法
これくらいのルールが分からないようじゃプログラマ失格だぞ
法典を示せ?テメエで調べろよ怠け者
0561デフォルトの名無しさん
2016/03/25(金) 05:55:20.56ID:Agsep6u6ここでは許される、ここでは許されない」みたいな部分で
規格のギリギリを突くような書き方が好ましいとは思わないけどね。
場面によらずアンダースコアで始まる名前は一切つけない、
という方針も安全策としてありうるかと。
せいぜい複数人で開発しているときに、
「このメンバ名、_で始まってるけどいいんだっけ?」
「この場合は許されてるんですよ。予約されてるのは…
(しばらく薀蓄タイム)…というわけなのです」
「ふぅん、そうか。要するに問題ないのね」
という会話が生じる程度のネタでしょ。
0562デフォルトの名無しさん
2016/03/25(金) 06:13:55.38ID:9WnSpcyZそれにネタ程度の話なんかじゃなくて、メンバ変数を_小文字始まりに統一するとIDEで_を入力するとメンバ変数の一覧が出てきてメッチャ捗るという現実的な恩恵がある
C#では奨励されているスタイルだし、C++とC#を同じくらいやる俺にとってはもうこのスタイルで統一するのがベストという結論
0563デフォルトの名無しさん
2016/03/25(金) 06:40:08.87ID:i3XIX2iS0564デフォルトの名無しさん
2016/03/25(金) 06:52:38.28ID:MISdMFxzどこで奨励されてるの?
https://msdn.microsoft.com/ja-jp/library/ms229045(v=vs.100).aspx
ここには使うなって書いてあるけど
0565デフォルトの名無しさん
2016/03/25(金) 07:06:04.17ID:ACUGT+cL0566デフォルトの名無しさん
2016/03/25(金) 07:35:12.73ID:bT5/u8Kc0567デフォルトの名無しさん
2016/03/25(金) 07:48:56.52ID:i3XIX2iSそんな不適切なページ
0568デフォルトの名無しさん
2016/03/25(金) 08:10:52.98ID:cXdBDF9lCとの共存に考えがいたらないまま、
>>557
>規格ちゃんと読んだか?
と言ってしまい、引っこみがつかなくなり発狂中
0569デフォルトの名無しさん
2016/03/25(金) 08:14:22.84ID:+Ze54dSh0570デフォルトの名無しさん
2016/03/25(金) 08:16:09.34ID:i3XIX2iS0571デフォルトの名無しさん
2016/03/25(金) 08:25:16.24ID:cXdBDF9lCのヘッダーを全くインクルードしなけりゃ良いよ
そんなの学校の宿題くらいしか無いけどね
0572デフォルトの名無しさん
2016/03/25(金) 08:29:34.02ID:UodAUCRU0573デフォルトの名無しさん
2016/03/25(金) 08:33:00.37ID:TW5rwKlv物議を醸すようなコードを晒してすみません
個人的には前アンスコでも後アンスコでもいいと思います
同じでプロジェクト単位で統一されていることが重要と思っていてC++としてどちらがいいとかはないと思ってます
0574デフォルトの名無しさん
2016/03/25(金) 09:11:07.81ID:+Ze54dShC/C++共用のヘッダじゃなきゃ自分でextern "C"することになるから、そのときに
両方の規格を気にするくらいで。
そもそも、自前のcppコードでメンバにアンダースコア使う話とCヘッダのインクルードが
どう関係あるのか意味不明。
0575535
2016/03/25(金) 09:21:42.75ID:qvYXoatKだいたい数十ファイル(ばらつき)を読み込んだあたりで突然落ちて
最初はメモリリークを疑ったからかなり明示的にメモリの解放を頻繁に行うようにした
でもやっぱり症状変わらなかった
解放済みメモリへのアクセスもあるかなって思ったけどようわからんかったけど
もうちょい頑張ってみる
>>546
OpenGLとかコードをパクりまくってつぎはぎだらけでなんとか表示させてるからあんまり意味わかってなくてつらい部分は確かにある
このOpenGLあたりでグラフィックメモリがパンクしてんのかとも思ってコード内でグラフィックの使用量吐き出させたりフリーソフトで監視したけどそんなにメモリが増大していってる感じじゃなかったな
0576デフォルトの名無しさん
2016/03/25(金) 09:37:39.50ID:KBRwIVstだったら前this か m_ の方がマシ
0577デフォルトの名無しさん
2016/03/25(金) 10:22:53.41ID:AP4XabWzclassのメンバ変数弄るならInline関数使うべきだろ。
そこ触るのにcとの互換性考慮する必要なくね?
0578デフォルトの名無しさん
2016/03/25(金) 11:19:19.06ID:9WnSpcyZhttp://stylecop.codeplex.com/wikipage?title=A%20Brief%20History%20of%20CSharp%20Style&referringTitle=Documentation
0579デフォルトの名無しさん
2016/03/25(金) 11:27:57.09ID:9WnSpcyZthis付けなくてもエラーにもなんにもならないしルール違反コード探すのだって容易じゃない
そんなの全く意味ないんだよこのクソバカStyleCop
0580デフォルトの名無しさん
2016/03/25(金) 15:47:57.54ID:ACUGT+cLそれを強制されるのなら、コーディング規約としては大して変わらん気がするなあ
0581デフォルトの名無しさん
2016/03/25(金) 16:01:49.59ID:ACUGT+cL0582片山博文MZ ◆T6xkBnTXz7B0
2016/03/25(金) 17:02:16.92ID:C4e13KV/Unboost --- Time to say good-bye to Boost
https://github.com/katahiromz/unboost
0583デフォルトの名無しさん
2016/03/25(金) 17:22:36.13ID:ZbElIMvp0584デフォルトの名無しさん
2016/03/25(金) 17:55:35.65ID:uQE9fwFQ0585デフォルトの名無しさん
2016/03/25(金) 18:09:09.53ID:i3XIX2iS0586デフォルトの名無しさん
2016/03/25(金) 18:12:39.86ID:i3XIX2iS0587デフォルトの名無しさん
2016/03/25(金) 18:24:41.23ID:uQE9fwFQん?便利と思うよ。mでも何でもいいけど。
逆に不便なのが、IDEのコンストラクタやsetter/getter自動生成機能で_やmが関数名や仮引数名についちゃうところ。
0588デフォルトの名無しさん
2016/03/25(金) 20:17:21.95ID:CiUv48rG0589デフォルトの名無しさん
2016/03/25(金) 20:31:45.14ID:9WnSpcyZ試しにVisualAssistをオフにすると確かに_入力すると要らん識別子がたくさん出てくるね
0590デフォルトの名無しさん
2016/03/25(金) 21:02:26.06ID:cXdBDF9l0591デフォルトの名無しさん
2016/03/25(金) 21:42:22.81ID:wYNIzxY00592デフォルトの名無しさん
2016/03/25(金) 22:51:46.85ID:UodAUCRU0593デフォルトの名無しさん
2016/03/25(金) 23:44:39.74ID:Z4j/XIfG0594デフォルトの名無しさん
2016/03/26(土) 00:16:33.30ID:tkiIr1J4楽しむのタイポかな
0595デフォルトの名無しさん
2016/03/26(土) 00:23:13.45ID:qvwT55MZこういうのがC++は生産性が低いとか言って回ってるんだろう
ウェブ以外
0596デフォルトの名無しさん
2016/03/26(土) 00:28:43.03ID:rFgFIa6fしたり顔で「C++は〜」などと語るのを見てさすがに反吐が出る
0597デフォルトの名無しさん
2016/03/26(土) 00:43:00.42ID:n7CZDVn6コーディング規約とか関係なく通用するぞ
0598デフォルトの名無しさん
2016/03/26(土) 00:47:37.09ID:MgEq8J/o0599デフォルトの名無しさん
2016/03/26(土) 01:00:28.25ID:KL+QyKv80600デフォルトの名無しさん
2016/03/26(土) 03:16:27.70ID:dPHkRzMW0601デフォルトの名無しさん
2016/03/26(土) 07:12:13.54ID:WyVomS0l四六時中、鏡ばっかり見てるナルシストさんですね
0602デフォルトの名無しさん
2016/03/26(土) 08:29:17.64ID:MOolL9qH麻薬使ってる人が犯罪起こして、麻薬は悪くない、使う方の問題
って言い回ってるのと変わらん。
厳密に正しくても普遍的には間違ってるってこと、わかる?
0603デフォルトの名無しさん
2016/03/26(土) 08:44:42.01ID:R9brpoqy0604デフォルトの名無しさん
2016/03/26(土) 09:45:44.31ID:DLlb1OCl0605デフォルトの名無しさん
2016/03/26(土) 09:52:52.12ID:x8vHWeP/0606デフォルトの名無しさん
2016/03/26(土) 10:21:57.85ID:WyVomS0l確かにM$のハンガリー記法は勘違いもいいとこで迷惑だが
0607デフォルトの名無しさん
2016/03/26(土) 10:38:24.29ID:qvwT55MZm_c○○○○
m_i○○○○
0608デフォルトの名無しさん
2016/03/26(土) 11:14:45.34ID:DLlb1OClそれは異常な感覚といえるな
0609デフォルトの名無しさん
2016/03/26(土) 11:15:22.04ID:dhtja+1lそしておかしな変数名を気持ち悪いと感じることをおかしいと考える奴も同レベル
0610デフォルトの名無しさん
2016/03/26(土) 11:24:39.33ID:oqt1XBlq0611デフォルトの名無しさん
2016/03/26(土) 11:26:02.29ID:nC5XRm0k0612デフォルトの名無しさん
2016/03/26(土) 11:40:47.61ID:drxQ1xsyスレチ
0613デフォルトの名無しさん
2016/03/26(土) 12:36:35.51ID:dPHkRzMW布教のようにその気味悪いスタンスを他に持ってくるな
0614デフォルトの名無しさん
2016/03/26(土) 12:38:35.72ID:dPHkRzMW0615デフォルトの名無しさん
2016/03/26(土) 12:58:40.88ID:amcLkjKvpimplとかで書くと直接テストできなくなるので困ってる
0616デフォルトの名無しさん
2016/03/26(土) 13:39:59.31ID:WyVomS0lpublic:
#endif
0617デフォルトの名無しさん
2016/03/26(土) 15:10:50.95ID:72n90ws50618デフォルトの名無しさん
2016/03/26(土) 15:27:07.31ID:drxQ1xsyそれで不満なら unittestall(), unittest(testid) みたいなメソッドを露出するか
0619デフォルトの名無しさん
2016/03/26(土) 16:18:42.90ID:xgz3RPza0620デフォルトの名無しさん
2016/03/26(土) 16:50:39.90ID:rTAUpSul0621デフォルトの名無しさん
2016/03/26(土) 16:56:47.85ID:rTAUpSul自然って何だよ
camelMustDieみたいなのは自然ですか?
0622デフォルトの名無しさん
2016/03/26(土) 18:08:51.11ID:qvwT55MZただ先頭が大文字か小文字かを強制するのは意味ないから止めろ
それを統一することで生産性が上がるなら証明するべきだし、それができないなら無意味だとして従わない
0623デフォルトの名無しさん
2016/03/26(土) 18:23:23.92ID:DLlb1OCl0624デフォルトの名無しさん
2016/03/27(日) 01:03:57.92ID:qNc2l1L80625デフォルトの名無しさん
2016/03/27(日) 01:11:36.93ID:FbZbPUQJ0626デフォルトの名無しさん
2016/03/27(日) 01:53:56.60ID:EAU7bKpG0627デフォルトの名無しさん
2016/03/27(日) 05:10:40.23ID:bhtDicVSプライベートな関数が呼び出せない(メンバー関数ポインターが取れない)ことことに気づいた。
よくわからんので、規格の14.7.2p12的にどうなの?と報告しといた
0628デフォルトの名無しさん
2016/03/27(日) 05:14:42.78ID:WowjK6nr0629デフォルトの名無しさん
2016/03/27(日) 06:02:28.55ID:xKhiQxW2こういうこと?
https://ideone.com/ebbVAP
2015 Update1では通るけど?
0630デフォルトの名無しさん
2016/03/27(日) 08:35:41.25ID:R6dvexpHそれ「呼び出す」と表現できるんだっけ?
0631デフォルトの名無しさん
2016/03/27(日) 09:35:47.69ID:1hdhT0Xmコンパイラのバグって大抵、気持ちはわかるもんだが
0632デフォルトの名無しさん
2016/03/27(日) 10:34:27.20ID:FPj3n5or取りたいなら、struct使うと思うけどね。
0633デフォルトの名無しさん
2016/03/27(日) 10:37:41.61ID:FbZbPUQJ0634デフォルトの名無しさん
2016/03/27(日) 10:49:50.28ID:1o1JeAKn関数ポインターなんてバカなもの使うのはやめて>>618が言ってるようにクラスの中に単体テストメソッド書け
それか単体テスト実行クラスを別に作ってfriend宣言だ
0635デフォルトの名無しさん
2016/03/27(日) 11:00:41.58ID:bhtDicVSそうじゃなくてこんな感じのコード
http://ideone.com/G0rchW
何故関数だけできないのか。何か見落としてるのか
0636デフォルトの名無しさん
2016/03/27(日) 11:09:05.17ID:WowjK6nr型判ってんならいちいち auto 使うなよハゲ
0637デフォルトの名無しさん
2016/03/27(日) 11:12:34.23ID:GYHXz8Cu0638デフォルトの名無しさん
2016/03/27(日) 11:25:33.33ID:WowjK6nrプライベートメンバな変数を外部から参照出来ているならそいつはVC++が仕様的におかしい。friend でも使わない限りアクセス許可されないはずだ。
0639デフォルトの名無しさん
2016/03/27(日) 11:36:25.90ID:b5RPwXUJ禿かどうかわからないだろ。そこはauto使おうよ
0640デフォルトの名無しさん
2016/03/27(日) 11:39:31.31ID:WowjK6nrいや、要らんだろ
字数多くなるし
ん?スタンス?
0641デフォルトの名無しさん
2016/03/27(日) 11:50:13.28ID:svF1nKbsイテレータでもきっちり書く
0642デフォルトの名無しさん
2016/03/27(日) 12:03:23.39ID:nUenius6>>638
gccでアクセスできてるサンプルと規格の当該箇所が示されてるのに
「許可されないはずだ」しか言えないなんて、お前はどれだけ低能なんだ
ちなみにclangでも通る
0643デフォルトの名無しさん
2016/03/27(日) 12:07:39.19ID:nUenius6>>635=>>642
0644デフォルトの名無しさん
2016/03/27(日) 12:37:57.94ID:1o1JeAKn何考えてるのか知らんけど
0645デフォルトの名無しさん
2016/03/27(日) 12:41:26.10ID:Yzg+pBV4お前らよりメイヤーズを信じる!
0646デフォルトの名無しさん
2016/03/27(日) 12:43:26.88ID:FbZbPUQJこだわりを捨てて自由になれる。
0647デフォルトの名無しさん
2016/03/27(日) 12:44:11.17ID:GYHXz8Cuたしかにそうだけど、あんなコードみたいに無意味な使い方を推奨してはいない。
初期化漏れ、関数からの返却型の勘違い、クロージャーを受け取る際のメモリ最適化
があるから推奨している。
一方で、イニシャライザーリストで初期化したときに、意図しない型推論が起きるから注意
とも書いてある。
0648デフォルトの名無しさん
2016/03/27(日) 12:50:08.45ID:WowjK6nrじゃその変数の参照が通るという糞ソース晒してみろよ
ブツがねぇのに違いなんてわからねぇだろ
0649デフォルトの名無しさん
2016/03/27(日) 12:58:46.41ID:ZVkuBwfbメイヤーズ C++やめるってよ
0650デフォルトの名無しさん
2016/03/27(日) 13:06:35.25ID:FbZbPUQJそういやそうだった
てか何歳なんだよ
0651デフォルトの名無しさん
2016/03/27(日) 13:17:55.79ID:1o1JeAKnhttps://social.msdn.microsoft.com/Forums/vstudio/en-US/9f05fd9d-9268-4c61-847b-2c151594f252/failure-to-comply-with-c-standard?forum=vcgeneral
https://connect.microsoft.com/VisualStudio/feedback/details/2448531/failure-to-comply-with-c-standard
まあ3年後くらいには直るんじゃない?www
14.7.2/12ルールを使ってprivateにアクセスなんてバッドノウハウは使うなというMSからのありがたい思し召しじゃ
こんなもの使って沢山のクラス、沢山のプライベートメソッドの単体テストコード
をどうやって書くつもりなんだよ?目も当てられない様な汚い状態になるぞ。
0652デフォルトの名無しさん
2016/03/27(日) 14:12:52.48ID:svF1nKbs#define private public
#endif
0653デフォルトの名無しさん
2016/03/27(日) 14:40:55.16ID:16qVVvu7gcc5.3.0でノーエラーノー警告だったぞ
0654デフォルトの名無しさん
2016/03/27(日) 15:07:10.88ID:1o1JeAKnでもこんなものは使うな
無意味なautoもだ
0655デフォルトの名無しさん
2016/03/27(日) 15:37:16.32ID:FbZbPUQJ0656デフォルトの名無しさん
2016/03/27(日) 15:53:04.46ID:nUenius6どうして他人に俺スタイルを強要したがるアホが多いんだろう
個人的には、むしろautoを避けた結果 無意味に一貫性が無い書き方になる方こそやめた方がいいと思うけど
0657デフォルトの名無しさん
2016/03/27(日) 16:22:00.88ID:svF1nKbs気分でautoを使うくらいでも問題ない
0658デフォルトの名無しさん
2016/03/27(日) 16:26:32.32ID:qNc2l1L811で廃止されたんだっけか
0659デフォルトの名無しさん
2016/03/27(日) 18:31:06.24ID:1hdhT0Xmなぜグローバルのコンテキストでのprivate関数の名指しを、突然そこで許すんだ?
関係ないが返却値はauto->で統一すべきだと思う
宣言の対象となる識別子より左に長さが一定でないものがあるという
Cから続く悪しき伝統をせっかく改めたのだから黒歴史はさっさと忘れようや
同じ話でtypedefもusingで統一していいだろう
0660デフォルトの名無しさん
2016/03/27(日) 18:51:38.33ID:nUenius6長さだけでなく戻り値のtype-idがまとまってるのも見やすいと思う
int (*f(int))[10];
auto f(int) -> int(*)[10];
そしてprivateアクセスを許す14.7.2の取ってつけたようなルールの意図は確かに不明だ
でもC++98からずっとある
0661デフォルトの名無しさん
2016/03/27(日) 19:03:47.24ID:1hdhT0Xm> 14.7.2 明示的な具現化
> 8 明示的な具現化を指定するために用いる名前には,通常のアクセス検査規則は,適用されない。
> 参考特に,関数宣言子(仮引数型,返却値の型及び例外仕様を含む。)中で使用される名前は,通常はアク
> セス可能でない非公開の型又はオブジェクトであってもよい。また,そのテンプレートは,通常はアク
> セス可能でないメンバテンプレート又はメンバ関数であってもよい。
0662デフォルトの名無しさん
2016/03/27(日) 20:18:21.82ID:u0G9Uv1h無は有を生んだ
これが全ての真理
0663デフォルトの名無しさん
2016/03/27(日) 20:39:08.85ID:GYHXz8Cu俺は逆で、autoと->が無駄な情報としてあるから、みにくいな
0664デフォルトの名無しさん
2016/03/27(日) 20:40:26.75ID:GYHXz8Cu0665デフォルトの名無しさん
2016/03/27(日) 20:55:22.40ID:n4P1YeBc無
0
= (-1)×0
= (-1)×(1-1)
= (-1)×1+ (-1)×(-1)
= -1+ (-1)×(-1)
両辺に1を足し、
1+0 = 1-1 + (-1)×(-1)
つまり、1=0+(-1)×(-1)
∴(-1)×(-1) = 1
0666デフォルトの名無しさん
2016/03/27(日) 21:37:40.14ID:svF1nKbsC#のvarだらけのコードをメンテさせられたとき軽く混乱しかたからマジ
0667デフォルトの名無しさん
2016/03/27(日) 21:56:58.87ID:aLC7L0Ndそれは
var foo = new Foo(); とか
var bar = (Bar) baz; とかでも?
0668デフォルトの名無しさん
2016/03/27(日) 21:57:04.76ID:nOeH6ELU0669デフォルトの名無しさん
2016/03/27(日) 21:57:25.64ID:+zMq83Ww0670デフォルトの名無しさん
2016/03/27(日) 21:59:48.82ID:xKhiQxW2http://ideone.com/Rf2j3k
こういうのautoの型を把握してないとハマるよね。実際ハマったことないけど
0671デフォルトの名無しさん
2016/03/27(日) 22:03:30.89ID:GYHXz8Cu0672デフォルトの名無しさん
2016/03/27(日) 22:07:27.95ID:svF1nKbsnewしてる場合はいいけど見慣れない関数の戻り値の場合いちいち確認しなきゃいけないから面倒くさい
俯瞰して処理の流れを整理したいときそれが入ると考えが乱れるときがある
0673デフォルトの名無しさん
2016/03/27(日) 22:50:18.38ID:QDvm7CjZって整数との演算定義されていないんだねえ。
1+z/2とか普通に使いそうなのに。
まあ、それは「整数との演算が定義されていません」ってエラーが
出るから良いけど。
あと、complex<float>とcomplex<double>の演算もできないんだ。
複素数使うような数値計算ではdouble基準だからいいけど。
演算子のオーバーロードを定義するだけだし。
0674デフォルトの名無しさん
2016/03/27(日) 22:53:10.46ID:M1h1PCkM0675デフォルトの名無しさん
2016/03/27(日) 22:53:33.36ID:GYHXz8Cucomplexではなく?
0676デフォルトの名無しさん
2016/03/27(日) 22:54:00.32ID:GYHXz8Cu変なこと言ってたらスルーして。
0677デフォルトの名無しさん
2016/03/27(日) 22:54:15.84ID:QDvm7CjZ#include <complex>の方
0678デフォルトの名無しさん
2016/03/27(日) 23:09:53.76ID:nOeH6ELU> 26.4.2 Class template complex [complex]
> namespace std {
> template<class T>
> class complex {
> public:
> typedef T value_type;
> constexpr complex(const T& re = T(), const T& im = T());
あとは、わかるな?
0679デフォルトの名無しさん
2016/03/27(日) 23:12:36.40ID:nUenius6これがC++クオリティー
0680デフォルトの名無しさん
2016/03/27(日) 23:27:21.83ID:QDvm7CjZすみません。わかりません。
これで整数との演算やcomplex<float>とcomplex<double>との演算が
可能になりますか?
decltypeとdeclval()使ったオーバーロードは試しましたが、
constexprを使った例を見たのは初めてです。
0681デフォルトの名無しさん
2016/03/27(日) 23:50:11.77ID:nOeH6ELUz/2.ではなくz/2か、失礼した
0682デフォルトの名無しさん
2016/03/28(月) 00:33:11.83ID:HB92OvOjぱっと見てわからない関数の戻り値をautoで受けるのは
わりとダメな使い方のほうなんじゃ…
0683デフォルトの名無しさん
2016/03/28(月) 01:29:23.80ID:qcb2KDJp0684デフォルトの名無しさん
2016/03/28(月) 08:43:21.82ID:XWzo3Vl60685デフォルトの名無しさん
2016/03/28(月) 10:41:36.56ID:Z0KWQSon0686デフォルトの名無しさん
2016/03/28(月) 11:05:21.48ID:XWzo3Vl60687デフォルトの名無しさん
2016/03/28(月) 11:23:45.44ID:OMGd+pup0688デフォルトの名無しさん
2016/03/28(月) 11:28:58.77ID:di4OCp5M0689デフォルトの名無しさん
2016/03/28(月) 12:55:46.89ID:d3YBhLBG0690デフォルトの名無しさん
2016/03/28(月) 12:58:51.91ID:di4OCp5M0691デフォルトの名無しさん
2016/03/28(月) 13:05:09.67ID:+tZpj9K4そんな風に信じてるのはCのWG14だけだ
0692デフォルトの名無しさん
2016/03/28(月) 13:13:47.24ID:R+Zfq3T/0693デフォルトの名無しさん
2016/03/28(月) 13:47:53.49ID:di4OCp5M0694デフォルトの名無しさん
2016/03/28(月) 14:37:23.70ID:W+7nMgLDプログラマが使うキーワードにそんなもの採用するなと思うね
_大文字はアプリでは禁止ってしておけば違反コードはgrepで簡単に見つけられるし
autoの件は別にautoで良いと思うけどな
auto func(void) -> void;
みたいな使い方をしない限りは
0695デフォルトの名無しさん
2016/03/28(月) 14:55:14.45ID:XWzo3Vl6なんで今さらどうにもならないキーワードにガタガタ言ってるのか
このばかちん共は
0696デフォルトの名無しさん
2016/03/28(月) 15:48:25.93ID:hQLGsHZz0697デフォルトの名無しさん
2016/03/28(月) 19:32:42.68ID:aAFkFiG7予約語と被ってもIDEが教えてくれるから何も困らないだろ
0698デフォルトの名無しさん
2016/03/28(月) 19:42:19.95ID:W+7nMgLDC++規格委員会は_大文字始まりをキーワードにするなんてバカな発想はしてない
そこは評価できる
0699デフォルトの名無しさん
2016/03/28(月) 22:54:52.48ID:R+Zfq3T/0700デフォルトの名無しさん
2016/03/29(火) 14:03:36.48ID:Mxqb9u1yみんなはどうしてる?
0701デフォルトの名無しさん
2016/03/29(火) 14:05:23.00ID:FYQaWiNnPostMessageが失敗しない事を監視する
0702デフォルトの名無しさん
2016/03/29(火) 14:12:33.70ID:s+SLRt+S0703デフォルトの名無しさん
2016/03/29(火) 14:41:23.44ID:pdgQCR7B0704デフォルトの名無しさん
2016/03/29(火) 14:55:24.71ID:WSKzICKpまーた悪手や
0705デフォルトの名無しさん
2016/03/29(火) 15:03:29.91ID:nEM/qKPT仕事でやってるならこういうところにはある程度の費用を惜しむな
ケチったばっかりにバカみたいに工数が膨れ上がったケースはいやというほど見てきた
ちなみに俺が今使ってるのはIntel Inspector XE
0706デフォルトの名無しさん
2016/03/29(火) 17:50:15.54ID:C2g/RtHbなんで?
0707デフォルトの名無しさん
2016/03/29(火) 17:58:21.57ID:TqAkCNK10708デフォルトの名無しさん
2016/03/29(火) 18:46:53.80ID:npJZCYbN0709デフォルトの名無しさん
2016/03/29(火) 19:12:38.16ID:nvewoInJマクロなんて
0710デフォルトの名無しさん
2016/03/29(火) 19:14:23.90ID:s+SLRt+S0711デフォルトの名無しさん
2016/03/29(火) 19:32:13.98ID:npJZCYbN使える機能は全部使っとけばいいのに
0712デフォルトの名無しさん
2016/03/29(火) 20:21:57.54ID:oqcyKopZoperator new/delete を再定義,渡すポインタを記録しdeleteで記録抹消,の繰り返し
0713デフォルトの名無しさん
2016/03/29(火) 20:53:20.32ID:u30OhyQiLinuxならvalgrind
Windowsは知らん
0714デフォルトの名無しさん
2016/03/29(火) 20:57:52.29ID:u30OhyQi0715デフォルトの名無しさん
2016/03/29(火) 21:11:01.41ID:nvewoInJそれはいやだよ
0716デフォルトの名無しさん
2016/03/29(火) 21:21:59.28ID:npJZCYbNgoto使っただけでキレてきそう
0717デフォルトの名無しさん
2016/03/29(火) 21:40:58.96ID:i9nCn85Oキミ>>708で自分で作るのが楽しいと言ってたのと矛盾してるような気がするんだが
0718デフォルトの名無しさん
2016/03/29(火) 21:51:20.31ID:7MEeFjE4って言うのが意味不明
マクロで(デバックバージョンの new に)置き換えるんだろ
0719デフォルトの名無しさん
2016/03/29(火) 21:58:16.53ID:nvewoInJ紛らわしい。
0720デフォルトの名無しさん
2016/03/29(火) 22:04:49.25ID:C2g/RtHbマクロ使っただけでキレる人はね
0721デフォルトの名無しさん
2016/03/29(火) 22:12:17.58ID:nvewoInJ0722デフォルトの名無しさん
2016/03/29(火) 22:25:16.38ID:C2g/RtHb0723デフォルトの名無しさん
2016/03/29(火) 22:27:37.31ID:nvewoInJ0724デフォルトの名無しさん
2016/03/29(火) 22:30:00.32ID:nvewoInJ0725デフォルトの名無しさん
2016/03/29(火) 22:30:14.88ID:7MEeFjE4どっちかって言うとオーバーライドだけどな
0726デフォルトの名無しさん
2016/03/29(火) 22:34:37.01ID:nvewoInJそれじゃますます「乗っ取る」の語感から遠ざかるな。
グローバルなoperator new のオーバーロードのことかと思ったぜ。
0727デフォルトの名無しさん
2016/03/29(火) 22:43:50.98ID:E3F4JfBl実際には同じファイルなのに違うファイル扱いになって(パスが違うから・・・)
#pragma onceが機能しないっていう罠が有るんだよね
0728デフォルトの名無しさん
2016/03/29(火) 23:01:23.07ID:AwO+nZlI置換のために使う奴は相当オツムが弱いんだろうなと思う。
マジでiostreamとか愛用してそうなレベル
0729デフォルトの名無しさん
2016/03/29(火) 23:08:30.06ID:QaYzwOX00730デフォルトの名無しさん
2016/03/29(火) 23:11:41.05ID:oVJBQ/xE0731デフォルトの名無しさん
2016/03/29(火) 23:24:52.30ID:C2g/RtHbなんで?
>>726
::operator newを「オーバーロード」なら
普通にnewしてる箇所は乗っ取れないぜ?
::operator new(void*)をデフォでなくするのは「オーバーライド」だろ
virtualを基底クラスが提供したデフォでなくすような意味合いで
0732デフォルトの名無しさん
2016/03/29(火) 23:32:59.06ID:nvewoInJいや、「普通にnewする」のをやめてマクロ定義した何かに全部置き換えるのかと思っていた。
だから「そんなのヤダ」と言っていたんだ。
>>703がそういう意味じゃないってなら忘れてくれ。
0733デフォルトの名無しさん
2016/03/29(火) 23:37:05.69ID:AwO+nZlI>「オーバーライド」だろ
そうか?
規格の10.3と13.5を見た限り「オーバーロード」が正しいように見えるのだが
0734デフォルトの名無しさん
2016/03/30(水) 00:00:03.43ID:fpTcXouK13. で多重定義とは何かを書いてあるよな
同じスコープで同じ名前の【型の異なる】宣言があることをいうと
::operator new(void*)は型の異なる宣言か?
0735デフォルトの名無しさん
2016/03/30(水) 00:12:04.37ID:dgdg37Vbむぅ、確かに「Overloaded operators」というタイトルで始まる説明の中に書かれているだけで、
operator newがオーバーロードだとは書かれていないな。
3.7.4の言葉では『replaces the default version』か。
少なくともオーバーライドではないのでは?
0736デフォルトの名無しさん
2016/03/30(水) 00:25:14.03ID:kph2Bx8Qoverloadよりはoperator new(void*)をユーザー定義することの意味に近いってことさ
俺もそれ以上の主張はしない
0737デフォルトの名無しさん
2016/03/30(水) 01:15:32.05ID:OkZk6jA9ソースを delete やその他明示的な解放処理の名前で検索。
単体 delete は unique_ptr 、配列 delete は vector で置き換える、
その他は RAII ラッパーのデストラクタに注意深く押し込む。
0738デフォルトの名無しさん
2016/03/30(水) 07:11:22.79ID:YrELR0Gg0739デフォルトの名無しさん
2016/03/30(水) 07:14:59.59ID:gjgR4bIq> いや、「普通にnewする」のをやめてマクロ定義した何かに全部置き換えるのかと思っていた。
> だから「そんなのヤダ」と言っていたんだ。
マジで10年ROMっとけ
0740デフォルトの名無しさん
2016/03/30(水) 07:17:19.65ID:gjgR4bIq> 少なくともオーバーライドではないのでは?
だから「どっちかって言うと」って書いてある
少なくともオーバーロードは明らかにおかしい
0741デフォルトの名無しさん
2016/03/30(水) 07:46:10.09ID:Quon4zw6operator new(void*)って簡単に置き換えられるんだっけ?
オーバーロードでこういうふうにする話かと思ってた。
http://jumble-note.blogspot.jp/2012/12/cnewdelete.html
MFCだとこれに
#define new DEBUG_NEW
なんて反則技合わせてリーク検出してるな。
0742デフォルトの名無しさん
2016/03/30(水) 07:49:45.12ID:rtr/ZoOr0743デフォルトの名無しさん
2016/03/30(水) 08:26:40.08ID:evGQ1MoD0744デフォルトの名無しさん
2016/03/30(水) 11:42:36.89ID:Spu236HUマクロとかどっさりついてきたよ
0745デフォルトの名無しさん
2016/03/30(水) 12:38:50.34ID:PF+SxQoWMFCのはさすがにげんなりしたなあ
0746デフォルトの名無しさん
2016/03/30(水) 12:55:15.16ID:idf8Q5SUcreatethreadあたりのapiで漏れるのは仕方ないけどw
0747デフォルトの名無しさん
2016/03/30(水) 13:31:18.66ID:CN1PPoue0748デフォルトの名無しさん
2016/03/30(水) 13:35:02.40ID:dzCSDoZX0749デフォルトの名無しさん
2016/03/30(水) 14:01:18.71ID:qbKmn6Oy一時回避策を常に使わねばならないなら、そもそも標準機能に取り入れてもらうよう委員会に働きかけるべきなのだ
0750デフォルトの名無しさん
2016/03/30(水) 14:22:49.90ID:PF+SxQoW0751デフォルトの名無しさん
2016/03/30(水) 14:23:11.65ID:/Q3RGEF90752デフォルトの名無しさん
2016/03/30(水) 20:32:04.48ID:yO7JBNvw自前実装ので横取りして呼ばれた時にコールスタックを歩いて呼び出し元を
特定して保存しておいて、リークしたらそれを表示するのが最強
つうかリーク検出ツールってそんな事してんじゃないかね
ちなみに横取りするのはOS毎にやり方が全然違う
0753デフォルトの名無しさん
2016/03/30(水) 21:01:04.68ID:/Q3RGEF9根拠を求める
0754デフォルトの名無しさん
2016/03/30(水) 21:47:32.97ID:yO7JBNvw0755デフォルトの名無しさん
2016/03/30(水) 21:47:58.81ID:GO4KFIifライブラリとOSの区別もついてない奴なのでスルーでお願いしますよ
0756デフォルトの名無しさん
2016/03/30(水) 22:06:10.86ID:yO7JBNvw> ライブラリとOSの区別もついてない奴なので
根拠を求める
0757デフォルトの名無しさん
2016/03/30(水) 22:27:59.13ID:eqedEeub馬鹿は去れ
0758デフォルトの名無しさん
2016/03/30(水) 22:34:06.24ID:yO7JBNvw思ってるのかよ…
じゃあ具体的にどんなAPIを呼び出してるか調査してここに書き込んでくれ
0759デフォルトの名無しさん
2016/03/30(水) 22:37:13.85ID:yO7JBNvwnewからメモリ確保APIまでのスタックトレースを貼り付けてくれ
ちなみにmallocは多めにメモリ確保してやり繰りするから
毎回OSのメモリ確保APIを呼び出すとは限らないよ
0760デフォルトの名無しさん
2016/03/30(水) 22:39:12.36ID:GO4KFIif> newもdeleteも最終的にはmalloc,freeが呼ばれるからそのライブラリ
> ちなみに横取りするのはOS毎にやり方が全然違う
0761デフォルトの名無しさん
2016/03/30(水) 22:39:40.25ID:yO7JBNvw0762デフォルトの名無しさん
2016/03/30(水) 22:42:46.29ID:yO7JBNvw> ちなみに横取りするのはOS毎にやり方が全然違う
え…まさか共有ライブラリのプリローディングのやり方が一緒だと思ってんのかよ…
0763デフォルトの名無しさん
2016/03/30(水) 22:45:13.80ID:tSFAkOFz俺もmallocを呼び出さないnewの実装なんてみたことないな
0764デフォルトの名無しさん
2016/03/30(水) 22:56:42.96ID:tSFAkOFzそしてmallocではプロセス内で効率的なヒープ管理をしててなるべくOSのAPIを呼び出さないようになってる
0765デフォルトの名無しさん
2016/03/30(水) 23:01:15.05ID:yO7JBNvwとりあえずBinary Hacksを1回は読んで欲しいもんだ
C++でmallocの差し替えについて書いてあったかは忘れたが
0766デフォルトの名無しさん
2016/03/30(水) 23:06:09.88ID:GO4KFIifスタティックライブラリも知らんのかよ...
そもそも >>703 辺りの話はソースレベルの話だぞ w
0767デフォルトの名無しさん
2016/03/30(水) 23:11:22.26ID:tSFAkOFz0768デフォルトの名無しさん
2016/03/30(水) 23:12:46.33ID:yO7JBNvwなんでわざわざスタティックライブラリにすんだ?
ちなみにWindowsの場合はmsvcrt.dll内にmallocがある
それとstrdup()とかしれっと内部でmallocを呼んでるからマクロだけだと
完全なリーク検出は厳しいよ (もちろん気をつければ不可能ではないが)
別にツールとか何も使わずにマクロだけでなんとかしたいって話なら無視してくれていいけど
0769デフォルトの名無しさん
2016/03/30(水) 23:15:43.26ID:/Q3RGEF9libcのmallocを使わなきゃいけないという決まりでもあるのか?
0770デフォルトの名無しさん
2016/03/30(水) 23:22:55.87ID:yO7JBNvwnewがmallocを呼び出さないといけない決まりなんて無いけど
逆にmallocを呼び出さないで効率的なメモリ管理なんてまず無理
今もマルチコアで効率的なmallocの実装とか発明され続けてるから相当奥が深い
0771デフォルトの名無しさん
2016/03/30(水) 23:26:04.37ID:dgdg37Vb何かのギャグですか
0772デフォルトの名無しさん
2016/03/30(水) 23:27:40.30ID:GO4KFIif> なんでわざわざスタティックライブラリにすんだ?
そんなもん組み方で色々あるだろ
dll のみしか考えない方がアホすぎる
0773デフォルトの名無しさん
2016/03/30(水) 23:28:34.84ID:tjBkUm/Rwindowsではdebugモードではmalloc、releaseモードではheapallocが直接呼ばれるみたいだよ
0774デフォルトの名無しさん
2016/03/30(水) 23:28:36.52ID:yO7JBNvwjemallocとかググってみ
つうかこのスレってこんなにもレベルが落ちてたのかよ…
0775デフォルトの名無しさん
2016/03/30(水) 23:30:41.86ID:kpJLQt7n0776デフォルトの名無しさん
2016/03/30(水) 23:30:48.57ID:clErjdG4mallocの効率もそんなに馬鹿に出来ないんじゃね。
0777デフォルトの名無しさん
2016/03/30(水) 23:31:36.76ID:yO7JBNvwマジかよ…当然デバッグ中にしか意味の無い機能だからrelaseモードで
heapallocが呼ばれても問題ないけど知らなかった
ちなみにg++での話か?なんとなくVC++のような気がするけど
0778デフォルトの名無しさん
2016/03/30(水) 23:39:53.55ID:kcHqUaQ/g++でもclangでもそうだよ
0779デフォルトの名無しさん
2016/03/30(水) 23:41:53.37ID:P0xSmpGrフリーリストの連結が遅い
一気に1万個ぐらいmalloc、freeしまくるプログラムでは問題になるよね
メモリを多少無駄遣いしてもよいのであれば、もっと早く動くアルゴリズムもあるので
常にmallocが良いとも限らないかと
mallocは汎用性を重視してあるので
0780デフォルトの名無しさん
2016/03/30(水) 23:47:52.10ID:yO7JBNvwなるほど、ありがとう
>>779
malloc,freeはメモリ確保の共通インターフェースだからmallocが速い遅い言うのはちょっと違う
場合によってjemallocみたいなのをプリロードしてmallocを差し替えるとかは他のOSSとかでやってたりする
0781デフォルトの名無しさん
2016/03/30(水) 23:52:03.72ID:/Q3RGEF9libcのmallocはスレッドセーフである事を要求されていない、c++のnewは要求されている
c++側で独自実装する理由は十分にある
>>774
まさか、jemallocが最強でそれがlibcに使われているとでも?
より高性能なメモリアロケータを独自実装していると言う考えには思い至らないのだろうか?
特にスマートポインタが一般化し、小サイズオブジェクトでの性能的が要求されてきているので、これも最適化のネタだ
0782デフォルトの名無しさん
2016/03/31(木) 00:03:10.29ID:wytOYZTkglibcのmallocは意図的に指定しない限りデフォはスレッドセーフだな
逆にスレッドセーフじゃない実装があるのか疑問だ
jemallocが最強とは一言も言ってないけどそういう状況にも対応出来るように
実装されてるはず (詳しくは知らん)
https://sploitfun.wordpress.com/2015/02/10/understanding-glibc-malloc/
ここに各OSのmallocの実装状況が出てたよ
0783デフォルトの名無しさん
2016/03/31(木) 01:05:19.93ID:ckG9MVZDいったいどうすれば、何を使えばそんなまねができるんだ?
0784デフォルトの名無しさん
2016/03/31(木) 01:21:52.62ID:My05nsXj他の環境は知らん
0785デフォルトの名無しさん
2016/03/31(木) 04:58:38.65ID:Sejgg9vlReleaseモードでもmallocが呼ばれてるけど?
VS2015 x86
0786デフォルトの名無しさん
2016/03/31(木) 05:49:30.37ID:Sejgg9vlWindows上のg++やclangでmallocを呼ばないで直接HeapAlloc呼び出す具体例を出すんだな
環境を明示すれば俺が調べてやるよ
0787デフォルトの名無しさん
2016/03/31(木) 06:08:29.49ID:Tq9AKUqv> ちなみに横取りするのはOS毎にやり方が全然違う
とかアホなことを言う知ったか君がいるからだろ
処理系毎って言っときゃいいのに
てか、もうその話題終わったし、周回遅れすぎだろ
0788デフォルトの名無しさん
2016/03/31(木) 06:11:46.11ID:4vGs+7xFC++はC言語を先にしっかり覚えておかないと身につかないものなのでしょうか?
初学者の質問ですいませんがお願いします
0789デフォルトの名無しさん
2016/03/31(木) 06:13:50.68ID:RIwggV0S0790デフォルトの名無しさん
2016/03/31(木) 06:23:58.54ID:4vGs+7xF一応borlandとC言語を始めようという奴をDLして実際に書きながら読んだりはしているのですが…
0791デフォルトの名無しさん
2016/03/31(木) 07:00:42.42ID:sYy1gdjMCを知らない人向けの、C++の良い入門書を見たことがない。
最初にC++の基礎知識としてCの説明が載ってるような本で学ぶと
Cのクセが身についてしまう気がするんだよなぁ。
0792デフォルトの名無しさん
2016/03/31(木) 07:24:48.84ID:4vGs+7xFありがとうございます
あのーC言語を先に勉強してたら後からC++をやる時、簡単に覚えられるとかそういったことはないんでしようか?
C言語はネットで少し調べて勉強してみた感じだと簡単な印象を受けたので意味あるならC言語から先にやろうと思ってるんですが
C言語覚えても大してC++の学習に意味が無いなら全く意味が分からないけどC++から勉強しようと思ってはいるんですが・・・
近道は無いですか
0793デフォルトの名無しさん
2016/03/31(木) 08:09:26.00ID:wytOYZTk処理系ww
ローダーとか知らないのかな
https://en.wikipedia.org/wiki/DLL_injection
↑ここを100回読めよ
0794デフォルトの名無しさん
2016/03/31(木) 08:29:35.30ID:0ft4Z4ziまだいたのか w
ライブラリを偽装する方法は DLL の差し替えだけじゃない
って何回説明しても理解できないんだろうな
0795デフォルトの名無しさん
2016/03/31(木) 08:32:53.26ID:2aAx7JX6何故意味がないと思ったのか
0796デフォルトの名無しさん
2016/03/31(木) 08:36:49.75ID:wytOYZTkいやそれだけ
それ以外はマクロハックと同じ
0797デフォルトの名無しさん
2016/03/31(木) 08:38:29.43ID:nkzU0v9FC++ は Cに上乗せして強化
自転車にエンジンつけてバイクにしたようなもの
どっちも転んだだけで死ぬので
初心者なら普通の4輪車がオススメ
0798デフォルトの名無しさん
2016/03/31(木) 08:42:13.72ID:wytOYZTkお前の言う処理系依存の方法は
strdup()が内部で呼んでるmalloc()とか
他のライブラリが呼んでるのも偽装できんだよな?
0799デフォルトの名無しさん
2016/03/31(木) 08:48:43.48ID:wytOYZTkちゃんと捕捉しないといけない
他のライブラリでそういうのがあったら全部捕捉する必要はある
0800デフォルトの名無しさん
2016/03/31(木) 08:49:59.01ID:ScXuRFRfスタティックライブラリのデバッグ版とかも知らんのか w
デバッグ用の API とか使って動的に差し替えるとかもあるし
無知すぎだろ
0801デフォルトの名無しさん
2016/03/31(木) 08:50:18.69ID:2aAx7JX6気持ちわる
0802デフォルトの名無しさん
2016/03/31(木) 08:58:28.39ID:wytOYZTkスタティックライブラリをリンクしたら素のmallocがそのままくっつくだけだろw
> デバッグ用の API とか使って動的に差し替えるとかもあるし
だからそれがDLL Injection
0803デフォルトの名無しさん
2016/03/31(木) 09:00:26.56ID:+VywWLYK> Windows上のg++やclangでmallocを呼ばないで直接HeapAlloc呼び出す具体例を出すんだな
ほらよ、c++ライブラリが独自のmallocを実装していた実例
http://www.doc.ic.ac.uk/lab/cplus/g++library/libg++_14.html
> Libg++ contains versions of malloc, free, realloc that were designed to be well-tuned to C++ applications.
> 環境を明示すれば俺が調べてやるよ
お前のゴミのような調査能力なんか全然期待していない。PostMessageを監視するお仕事に戻る事だ。
0804デフォルトの名無しさん
2016/03/31(木) 10:12:16.22ID:lfltnis2ソースみてないけど
mallocが、呼び出すんじゃないの、これ?
0805デフォルトの名無しさん
2016/03/31(木) 10:50:23.72ID:Sejgg9vllibg++www悪いけど俺は考古学者じゃないんでね
それにこれですらnewはmallocを呼び出すことに変わりないし
お前はやっぱりプレミアム級のバカだなあ
0806デフォルトの名無しさん
2016/03/31(木) 10:56:31.42ID:Sejgg9vlを求めてるのにlibg++を持ちだして勝ち誇ったような態度されてもね
そんなんだから(略)
0807デフォルトの名無しさん
2016/03/31(木) 11:17:25.46ID:+VywWLYK0808デフォルトの名無しさん
2016/03/31(木) 11:21:17.83ID:Sejgg9vl773 :デフォルトの名無しさん :2016/03/30(水) 23:28:34.84 ID:tjBkUm/R
stackexchangeによれば、
windowsではdebugモードではmalloc、releaseモードではheapallocが直接呼ばれるみたいだよ
778 :デフォルトの名無しさん :2016/03/30(水) 23:39:53.55 ID:kcHqUaQ/
>>777
g++でもclangでもそうだよ
0809デフォルトの名無しさん
2016/03/31(木) 11:59:17.72ID:4vGs+7xFC言とC++自分で見た感じだと全く違うもののように見えたので、自分で全く意味ないと解釈してました
とりあえず意味があるならC言語のほうが簡単そうなので先にC言語やっちゃいたいと思います。
ありがとうございます
0810デフォルトの名無しさん
2016/03/31(木) 12:10:55.85ID:61JDjacRC++の必要十分な機能を使うだけならCを勉強する必要は無い
正直言って勉強前に見当をつけるのは無理
0811デフォルトの名無しさん
2016/03/31(木) 12:47:15.96ID:4vGs+7xF具体的にありがとうございます
。C++学習の目的はゲームのプログラムを覗いたり色んなツールとか作ってみたいからとかなんですが
何が必要で何が不必要か自分じゃ全く分からないので無難にC言語の基礎くらい覚えてからやった方がいいですよね・・
0812デフォルトの名無しさん
2016/03/31(木) 12:49:42.06ID:ScXuRFRf> スタティックライブラリをリンクしたら素のmallocがそのままくっつくだけだろw
バカなの?
デバッグ版のライブラリとリンクすればいいだけだろ
ライブラリって提供された奴しかダメとか思ってるのか?
> > デバッグ用の API とか使って動的に差し替えるとかもあるし
> だからそれがDLL Injection
違う
DebugActiveProcess とか ptrace を使う話だ
0813デフォルトの名無しさん
2016/03/31(木) 13:01:17.81ID:ScXuRFRfどんなときに使うのか知らんけど
_SYSCRT を定義してライブラリを作ると new で _heap_alloc を呼び出すコードになってるな
Visual Studio Express 2013
0814デフォルトの名無しさん
2016/03/31(木) 13:01:53.14ID:61JDjacR基本だけ抑えて早々に移行するのが良いと思う
C++のどの部分がC由来かが分かるだけで
見通しもかなり良くなるはず
0815デフォルトの名無しさん
2016/03/31(木) 13:10:41.88ID:wytOYZTkデバッグ版のライブラリとリンクするとmallocがどうなるってんだよw
意味不明
> DebugActiveProcess とか ptrace を使う話だ
何言ってんの…馬鹿かよ
DLL Injectionと何の関係があんだよ
論点がずれてるようだがデバッグをするんじゃないだろ
malloc,freeを自前の実装版で捕捉してメモリリークの調査をするっていうながれをずっとしてんだろ
0816デフォルトの名無しさん
2016/03/31(木) 13:14:41.51ID:wytOYZTkとりあえずDebugActiveProcess使ってmallocを自前実装版に差し替える手順を説明しろ
https://msdn.microsoft.com/ja-jp/library/cc428926.aspx
がDebugActiveProcessのリファレンスだがそんな機能は全く無いけどなw
0817デフォルトの名無しさん
2016/03/31(木) 13:46:30.55ID:+VywWLYKPostMessageくんは本当に頭が悪いな。もとのお題はこれだよ。
752 : デフォルトの名無しさん2016/03/30(水) 20:32:04.48 ID:yO7JBNvw
newもdeleteも最終的にはmalloc,freeが呼ばれるからそのライブラリを
自前実装ので横取りして呼ばれた時にコールスタックを歩いて呼び出し元を
特定して保存しておいて、リークしたらそれを表示するのが最強
つうかリーク検出ツールってそんな事してんじゃないかね
ちなみに横取りするのはOS毎にやり方が全然違う
0818デフォルトの名無しさん
2016/03/31(木) 14:03:56.09ID:Sejgg9vlPostMessageの件がなんでお前のトラウマボタンを押しちゃったのか分からないがそろそろ落ち着け
C++のライブラリははnewもmallocも両方サポートする必要があるという状況で
newはmallocを呼び出す薄いラッパーとして実装されるのが自然なのであって
そうじゃない実装なんて見たことない
例外があるなら具体的に挙げてみろと言ってるだけなのだが?
アサッテなものを持ちだしては「証明終了!」とか実にお前らしいなあ
まあ、そういう例外があっても規格に違反してるわけじゃないし、別におかしくはないんだけどね
0819デフォルトの名無しさん
2016/03/31(木) 14:45:20.35ID:yy0681ErC++にはデストラクタがあるから、そこに何かを仕込めそう
一方、Rubyにはデストラクタが無いから、GCのファイナライザーに仕込むしかない
0820デフォルトの名無しさん
2016/03/31(木) 14:50:10.53ID:Dfa8D5EM0821デフォルトの名無しさん
2016/03/31(木) 16:12:26.92ID:Sejgg9vlだから何?わけの分からない粘着君
0822デフォルトの名無しさん
2016/03/31(木) 16:34:41.88ID:7za8ruVEfree(new char); が未定義動作にならないって、どこかに書いてあるのか?
0823デフォルトの名無しさん
2016/03/31(木) 18:44:40.77ID:DVM4CxPR・メモリ不足で死ねない場合はPostMessageを監視する
・早い話valgrindはリーク検出については使いものにならない
・classのデフォルトアクセス範囲をpublicにすべき
・VCでの開発時コンソールプログラムを終了時に待機させるのにCtrl+F5するのはバッドノウハウ
・newもdeleteも最終的にはmalloc,freeが呼ばれるから自前実装で横取りする
ちなみに横取りするのはOS毎にやり方が全然違う
0824デフォルトの名無しさん
2016/03/31(木) 18:45:39.46ID:DVM4CxPR誰か直しといて
0825デフォルトの名無しさん
2016/03/31(木) 19:11:23.53ID:wytOYZTk俺は
ID:yO7JBNvw
ID:wytOYZTk
だぞ。全部抽出してみ、書いてる事は全て正しいよ
0826デフォルトの名無しさん
2016/03/31(木) 19:16:52.76ID:DVM4CxPRわかってる
ぼーっとこぴぺして加工したあとに気がついた
0827デフォルトの名無しさん
2016/03/31(木) 19:17:23.31ID:DVM4CxPRぼーっとしすぎや
0828デフォルトの名無しさん
2016/03/31(木) 19:18:53.02ID:wytOYZTkお前基地害だろ
0829デフォルトの名無しさん
2016/03/31(木) 19:19:33.09ID:2aAx7JX60830デフォルトの名無しさん
2016/03/31(木) 19:21:10.87ID:wytOYZTkこちは真性だろ。本物は初めて見た
0831デフォルトの名無しさん
2016/03/31(木) 19:37:49.81ID:ScXuRFRf> デバッグ版のライブラリとリンクするとmallocがどうなるってんだよ
なんでもやり放題だろ
ライブラリ作ったことないのか?
Visual Studio も GCC/clang もライブラリのソースがあるから malloc/free をラップして確保/解放情報を取得するとか簡単にできる
> > DebugActiveProcess とか ptrace を使う話だ
> DLL Injectionと何の関係があんだよ
DLL Injection と違うって書いてあるのになんの関係ガー
とかバカすぎるだろ w
> 論点がずれてるようだがデバッグをするんじゃないだろ
デバッガーでブレークかけて違う関数呼び出したりできることもご存じない?
> malloc,freeを自前の実装版で捕捉してメモリリークの調査をするっていうながれをずっとしてんだろ
ここだけは合ってるんだな w
0832デフォルトの名無しさん
2016/03/31(木) 19:48:30.56ID:ScXuRFRfホントに応用力ないのな w
DebugActiveProcess でプロセスにアタッチして
WaitForDebugEvent でプロセス一時停止するまで待って
WriteProcessMemory でブレークポイント置いて実行継続
ブレークしたら malloc エミュレートするなりなんでもできるだろ
0833デフォルトの名無しさん
2016/03/31(木) 19:51:31.05ID:wytOYZTk> Visual Studio も GCC/clang もライブラリのソースがあるから malloc/free をラップして確保/解放情報を取得するとか簡単にできる
だからサードパーティ製のようなDLLしかないライブラリを使う場合はどうなるってんだよ
DLL Injectionでmalloc/freeを置き換えるのが不可能だと言いたいのか?
不可能ではなければそれだけで全て事足りるだろ
> DLL Injection と違うって書いてあるのになんの関係ガー
> とかバカすぎるだろ w
> > > デバッグ用の API とか使って動的に差し替えるとかもあるし ← これお前の書き込み
> > だからそれがDLL Injection
> 違う
DebugActiveProcess とか ptrace を使う話だ ← これお前の書き込み
↑デバッグ用のAPI(お前が言うにはDebugActiveProcessだが)で動的に差し替えてみろよ
基地害だからDebugActiveProcessで動的差し替えできると思ってるらしいが
> デバッガーでブレークかけて違う関数呼び出したりできることもご存じない?
お前何万回と呼ばれる可能性のあるmallocをブレークとか片腹痛いwww
お前は手動でやる事にこだわってたのかよ…そりゃ話が合わないわ
もういいよボロが出ちゃったから
0834デフォルトの名無しさん
2016/03/31(木) 19:52:41.84ID:wytOYZTk取り合えずお前らみんな手動でやる事にこだわってたんだなw
ポチポチ頑張ってくれよw
0835デフォルトの名無しさん
2016/03/31(木) 19:57:15.37ID:ScXuRFRf> 例外があるなら具体的に挙げてみろと言ってるだけなのだが?
>>813 じゃダメなのか?
0836デフォルトの名無しさん
2016/03/31(木) 20:09:40.29ID:ScXuRFRf> だからサードパーティ製のようなDLLしかないライブラリを使う場合はどうなるってんだよ
勝手な後だし条件かよ w
サードパーティの malloc ?
とりあえず参考までに具体的な名前教えて
> DLL Injectionでmalloc/freeを置き換えるのが不可能だと言いたいのか?
別にやりたきゃやればいいだけ
別の方法もあるってだけの話
> 不可能ではなければそれだけで全て事足りるだろ
スタティックライブラリの例は無視なの?
> 基地害だからDebugActiveProcessで動的差し替えできると思ってるらしいが
DebugActiveProcess「とか」って書いてあるのが見えないの?
> お前は手動でやる事にこだわってたのかよ…そりゃ話が合わないわ
はあ?
なんのために API の名前書いてあると思ってるんだ?
そう言うプログラムを作るだけの話だろ
デバッグて書くとデバッガしか思いつかないとかどんだけ頭固いんだよ...
> もういいよボロが出ちゃったから
敗北宣言ですか?
確かにお前のレスはボロボロだしな w
0837デフォルトの名無しさん
2016/03/31(木) 20:11:03.13ID:X8/ytHGiつhttp://www.amazon.co.jp/dp/4894714221
0838デフォルトの名無しさん
2016/03/31(木) 20:18:26.41ID:wytOYZTk> 勝手な後だし条件かよ w
つうかそれぐらい普通に想定しろよw
> サードパーティの malloc ?
サードパーティのmallocなんて言ってねーよw
DLL内でnewしてオブジェクトを返すライブラリがあったとして
それをdeleteするにはDLL内のmallocを捕捉する必要がある。アンダースタン?
> 別の方法もあるってだけの話
それは分かったよ
一生懸命ブレーク張って置き換えんだろwww
面白すぎるもっとやってくれ
> そう言うプログラムを作るだけの話だろ
DebugActiveProcess「とか」言ってんなら
取り合えず数行でもいいからコード書いてよマジで
とりあえず一生懸命ネットでググって得た知識だから
全然具体的な事はわかってないんだろ?
マジで書けよ、おい
0839デフォルトの名無しさん
2016/03/31(木) 20:21:28.25ID:wytOYZTk取り合えずDebugActiveProcessで一回嘘ついてんだよお前は
早く他の方法をコードつきで書けよ、ほら
次はなんだよ
0840デフォルトの名無しさん
2016/03/31(木) 20:27:56.34ID:wytOYZTk> > DLL Injectionでmalloc/freeを置き換えるのが不可能だと言いたいのか?
> 別にやりたきゃやればいいだけ
> 別の方法もあるってだけの話
DLL Injectionでいいし何も問題無い事にわざわざケチ付けて別の方法を言う意味がどこにあんだよ
マジで頭おかしいだろ
0841デフォルトの名無しさん
2016/03/31(木) 20:48:29.39ID:6cajku4Z0842デフォルトの名無しさん
2016/03/31(木) 20:56:47.61ID:WeZ5Ydwh0843デフォルトの名無しさん
2016/03/31(木) 21:00:14.44ID:ScXuRFRf> それをdeleteするにはDLL内のmallocを捕捉する必要がある。アンダースタン?
delete ?
ちょっと頭冷やした方がよくね?
3連投とか顔真っ赤なのはわかったからさ w
> 一生懸命ブレーク張って置き換えんだろwww
ん?
一生懸命なのはコンピューターだよ?
ああ、無駄なレスしてるお前も一生懸命だったな w
> 取り合えず数行でもいいからコード書いてよマジで
>>832 で十分だろ?
あれでわかんないところがあるのか?
>>839
> 取り合えずDebugActiveProcessで一回嘘ついてんだよお前は
はあ?
どこが嘘なのか具体的によろ
>>840
> DLL Injectionでいいし何も問題無い事にわざわざケチ付けて別の方法を言う意味がどこにあんだよ
はっきり「スタティックライブラリ」って書いてあってもアホは噛みついてくるんだな
狂犬病かよ w
0844デフォルトの名無しさん
2016/03/31(木) 21:13:16.81ID:wytOYZTk> delete ?
auto a = getNewObjectFromThirdPartyLib();
... aを使う
delete a; ← これ
newはライブラリ内にあるが、deleteは自分のソースに書く
リークを検出するには、ライブラリ内のnew(malloc)を捕捉しないと
自分のソース内のdelete と釣り合いが取れなくなる
っていうか、頭悪wwwかわいそうだなお前
> あれでわかんないところがあるのか?
分かってないのはお前
取り合えずコード書けないのは分かったから流れだけでも説明してよ
それすら出来ない?
多分しないだろうけど
> どこが嘘なのか具体的によろ
https://msdn.microsoft.com/ja-jp/library/cc428926.aspx
> デバッガをアクティブなプロセスにアタッチしてデバッグできるようにします。
プロセスにアタッチするAPIだからwww残念
お前はデバッグさえ出来れば置き換えられると思って書いただろうけど
アタッチするだけのAPIだったよwww
俺は知らないけど他に必要なんだよ(手動は無しよw)
だから次はそれを教えてよ、はい頑張って
0845デフォルトの名無しさん
2016/03/31(木) 21:16:35.66ID:wytOYZTk> はっきり「スタティックライブラリ」って書いてあってもアホは噛みついてくるんだな
>>767を読め(これは俺じゃない)
0846デフォルトの名無しさん
2016/03/31(木) 21:22:55.74ID:2aAx7JX62chでまじめな話は無理だってことは証明された
0847デフォルトの名無しさん
2016/03/31(木) 21:23:07.76ID:wytOYZTkDebugActiveProcessって英語読めれば一目瞭然なのにここまで引っ張るとはw
DebugActiveProcess君は次も間違いなく具体的なことは書かずに
誹謗中傷に徹するだろうな
0848デフォルトの名無しさん
2016/03/31(木) 21:30:04.70ID:Tq9AKUqvだから頭冷やせよ...
> それをdeleteするにはDLL内のmallocを捕捉する必要がある。
どこがアホなのか説明した方がいいか? w
> 流れだけでも説明してよ
>>832 に流れが説明してあることも理解できないのか?
とりあえず >>832 に書いてある API をググる作業に戻れよ w
0849デフォルトの名無しさん
2016/03/31(木) 21:34:51.22ID:wytOYZTk> > それをdeleteするにはDLL内のmallocを捕捉する必要がある。
> どこがアホなのか説明した方がいいか? w
それを(リーク検出の為に釣り合いを保って)deleteするにはDLL内のmallocを捕捉する必要がある。
アホには言葉足らずだったスマン
> >>832 に流れが説明してあることも理解できないのか?
手動のやつかよ興味ねーよ
毎回アタッチされて止まるまで待つのかよ馬鹿かよw
DLL Injection
0850デフォルトの名無しさん
2016/03/31(木) 21:37:31.76ID:nkzU0v9Fって自分でデバッガ自作するときのやつだろ
そこまでやるならなんか買って来て使えばいい
0851デフォルトの名無しさん
2016/03/31(木) 21:37:36.59ID:wytOYZTkDLL Injectionと比較して利点と欠点ぐらい言えよ
非効率な方法を一生懸命説明してるのがマジで切ない
0852デフォルトの名無しさん
2016/03/31(木) 21:38:09.58ID:hPPCag02DLL境界を越えてメモリブロックを渡して呼び出し側にdeleteさせるなんてライブラリは
ほとんど仕様のバグに等しいんだから、そんなの考慮外でいいだろう。
0853デフォルトの名無しさん
2016/03/31(木) 21:43:46.11ID:wytOYZTkそうとは言い切れない
auto a = getNewObjectFromThirdPartyLib();
... aを使う
releaseObjectFromThirdPartyLib(a);
みたいに直接deleteはさせないけど解放用のAPIを用意してることは考えられる
releaseObjectFromThirdPartyLib(a);を呼び忘れる事がメモリリークだから
考慮は必要だと思うよ
0854デフォルトの名無しさん
2016/03/31(木) 21:51:21.59ID:lrEHU6MCgslのワークスペースなんかはそんな仕様だよな
0855デフォルトの名無しさん
2016/03/31(木) 22:00:14.98ID:hPPCag02だから>>844は間違ってて、>>853のようにするのが正しいんだよ。しれっと修正すんなw
で、「getで取得したものはreleaseで返しましょう」ってなったらリーク検知というよりも
そのライブラリの使い方が正しいかどうかって話だな。
そもそもそのgetで動的にメモリを確保してるのかどうかすらわからんわけだし。
0856デフォルトの名無しさん
2016/03/31(木) 22:06:00.43ID:wytOYZTk修正したつもりはなかったけど、deleteだけさせる事は確かにほとんど無いかもね
でもDLL Injectionでmalloc/freeに加えてget/releaseも捕捉すればいいから
メモリ以外にも色々なリソースリークに使えるはず
0857デフォルトの名無しさん
2016/03/31(木) 22:18:54.48ID:Tq9AKUqv別にアホが複数いるのは珍しくないけど?
で、君の意見はないのか?
0858デフォルトの名無しさん
2016/03/31(木) 22:24:48.34ID:Tq9AKUqv> それを(リーク検出の為に釣り合いを保って)deleteするにはDLL内のmallocを捕捉する必要がある。
malloc を捕捉なんてしなくても delete できるけど?
まだ、恥の上塗りする? w
> 毎回アタッチされて止まるまで待つのかよ馬鹿かよw
バカすぎ笑たわ
>> WaitForDebugEvent でプロセス一時停止するまで待って
って書いてあるのも理解できてないとか w
0859デフォルトの名無しさん
2016/03/31(木) 22:27:10.04ID:Tq9AKUqv動作中のプロセスにも適用できるとかかな
もちろんスタティックライブラリでも大丈夫だし w
0860デフォルトの名無しさん
2016/03/31(木) 22:30:31.37ID:Tq9AKUqv> って自分でデバッガ自作するときのやつだろ
デバッガの作成にしか使えないと思ってるなら頭固すぎ
あるものは便利に使わなきゃね
0861デフォルトの名無しさん
2016/03/31(木) 22:33:36.80ID:wytOYZTk> malloc を捕捉なんてしなくても delete できるけど?
メモリリークの話してんのにmallocを捕捉しないとか本末転倒過ぎてもう…
色々突っこんでる奴いるけどお前が群を抜いて馬鹿だなww面白すぎww
>> WaitForDebugEvent でプロセス一時停止するまで待って
いや待ってるじゃんww
メクラかよ
サーバープログラムとか一時停止するまで待つとかありえねーよ
っていうと後出し言うんだろwww
お前が経験無いだけだからww残念
DebugActiveProcess君、はい次どうぞww待ってるよ
0862デフォルトの名無しさん
2016/03/31(木) 22:39:28.58ID:wytOYZTk> malloc を捕捉なんてしなくても delete できるけど?
これを書き込むに至った理由を頼むから教えてくれ、m(_ _)m ← このとーりwww
ちゃんと保存しとくから
0863デフォルトの名無しさん
2016/03/31(木) 22:47:39.10ID:wytOYZTkあと>>832で
> ブレークしたら malloc エミュレートするなりなんでもできるだろ
ここのAPIが書いてないからサクッと補完しといて(手動は無しよw)
見た瞬間分かるんだよね?どこかのリンクでもいいよ
0864デフォルトの名無しさん
2016/03/31(木) 22:51:13.84ID:Tq9AKUqv別に数ms 程度停まっても平気なサーバーソフトはいくらでもあるぞ
>> malloc を捕捉なんてしなくても delete できるけど?
> これを書き込むに至った理由を頼むから教えてくれ
冷静なら
> DLL内でnewしてオブジェクトを返すライブラリがあったとして
> それを(きちんと)delete(したかを確認)するにはDLL内のmallocを捕捉する必要がある。
って書くわな
恥ずかしいだろうからわざと説明しなかったのに w
0865デフォルトの名無しさん
2016/03/31(木) 22:55:30.35ID:wytOYZTk> 別に数ms 程度停まっても平気なサーバーソフトはいくらでもあるぞ
とりあえず>>863に返答して完全に自動で出来る事を証明しろ
じゃなきゃ手動でやってたら数msで済むわけ無いだろ
>>849に書いたけど
> それを(リーク検出の為に釣り合いを保って)deleteするにはDLL内のmallocを捕捉する必要がある。
> アホには言葉足らずだったスマン
揚げ足取るにしても寒いツッコミだったなwww
はい次、>>863の返答を待ってるよ
0866デフォルトの名無しさん
2016/03/31(木) 22:57:25.36ID:X8/ytHGi0867デフォルトの名無しさん
2016/03/31(木) 22:57:46.00ID:Tq9AKUqv> ここのAPIが書いてないからサクッと補完しといて(手動は無しよw)
API?
お前本当に何もわかってないんだな w
お前が言ってる DLL Injection でも Injection されるコードは必要だろ?
さすがにそれぐらいは理解してると思ったが...
0868デフォルトの名無しさん
2016/03/31(木) 22:58:20.05ID:6K07pBVr0869デフォルトの名無しさん
2016/03/31(木) 22:59:37.41ID:wytOYZTkちなみにWriteProcessMemoryは関数が置いてあるコード領域は書き換えられないよ
これはグローバル変数とか書き換える用だろ
0870デフォルトの名無しさん
2016/03/31(木) 23:02:06.51ID:wytOYZTkアホか
だからmy_malloc()みたいな関数があってそれをどう使えば
>>832の後に関数の中身を書き換えられるのかコードかリンクを出せよ
さっきから文章しか書いてないぞ
そろそろコードがみたいよwww
0871デフォルトの名無しさん
2016/03/31(木) 23:03:46.52ID:Tq9AKUqv> とりあえず>>863に返答して完全に自動で出来る事を証明しろ
デバッガというソフトがやれることが自動化できない理由がないと思うんだが...
> じゃなきゃ手動でやってたら数msで済むわけ無いだろ
なんで手動にアホみたいに固執するのか意味わからん
マクロを知らないで Excel でポチポチやってるおばちゃん並みの知恵しかないのか w
0872デフォルトの名無しさん
2016/03/31(木) 23:05:53.46ID:wytOYZTk> デバッガというソフトがやれることが自動化できない理由がないと思うんだが...
ご名答ww
だからAPIを教えてっていってんだよ
なぜならお前が何も知らない馬鹿だと思ってるからそれを覆して欲しい
> なんで手動にアホみたいに固執するのか意味わからん
それがお前が手動でしかできない方法をアホみたいに支持してるからwww
0873デフォルトの名無しさん
2016/03/31(木) 23:10:41.80ID:wytOYZTkとりあえず今後はデバッガ野郎って呼ぶよw
0874デフォルトの名無しさん
2016/03/31(木) 23:15:42.52ID:wytOYZTk逆に、理論上出切るとしても>>832の流れで関数書き換えを自動化するAPIが
無かったらどうすんの?
それでも出来るから出来ると言い張るのか?
0875デフォルトの名無しさん
2016/03/31(木) 23:15:55.54ID:Tq9AKUqv> ちなみにWriteProcessMemoryは関数が置いてあるコード領域は書き換えられないよ
はあ?
まあお前には無理かもな w
ちゃんとやれば普通に書き換えられる
0876デフォルトの名無しさん
2016/03/31(木) 23:17:52.72ID:wytOYZTkちゃんととは?
メモリの属性を書き換えるんだろ?そのAPIをちょろっと教えてよ
0877デフォルトの名無しさん
2016/03/31(木) 23:19:18.82ID:wytOYZTkで、>>832の
> ブレークしたら malloc エミュレートするなりなんでもできるだろ
これに関する話題が無いけど、こっちも早く返答しろ
0878デフォルトの名無しさん
2016/03/31(木) 23:19:26.94ID:Tq9AKUqv理論も何もデバッガが普通にやってることだぞ
デバッグ中にソースコード変更してデバッグ継続とかすらできる時代に何を言ってるんだよ...
デバッガが魔法のソフトだとでも思ってるのかよ w
0879デフォルトの名無しさん
2016/03/31(木) 23:21:31.31ID:wytOYZTkID変わる前に
> ブレークしたら malloc エミュレートするなりなんでもできるだろ
が出来る事をコードを書くなりリンクを貼るなり早くしてくれ
0880デフォルトの名無しさん
2016/03/31(木) 23:23:25.43ID:wytOYZTkだから>>832に自動化する方法をサクッと付け加えてくれればいいよ
0881デフォルトの名無しさん
2016/03/31(木) 23:24:15.22ID:wytOYZTkさっきからコードを書いたりリンク貼ることを一生懸命回避してるなw超ウケルよww
0882デフォルトの名無しさん
2016/03/31(木) 23:27:45.26ID:Tq9AKUqv属性?
知ってる知識総動員かよ、しかも的はずれとか w
とりあえずお前はここ読んどけ
やってる内容はちょっとアレだけどコードにパッチ当てるコードが載ってる
http://peryaudo.hatenablog.com/entry/20100516/1273998518
0883デフォルトの名無しさん
2016/03/31(木) 23:32:31.59ID:wytOYZTkお!やっと来たか!
確かにこれでパッチは可能だな。これは参考になる
ただコンパイルしたコードはアドレスとか解決しないといけない
それが足りないから、はい次待ってるよ
0884デフォルトの名無しさん
2016/03/31(木) 23:34:02.76ID:wytOYZTkデバッガを作るだけじゃ飽き足らずこんどはローダーを作らないといけないな
で、完成したものはDLL Injectionのコードと同じになるというwww
0885デフォルトの名無しさん
2016/03/31(木) 23:35:37.45ID:wytOYZTkとりあえずMy DLL Injectorに半分近づいたよwww
残りを楽しみに待ってるよ
0886デフォルトの名無しさん
2016/03/31(木) 23:48:41.29ID:wytOYZTkもしかしてコンパイルしたコードをそのまま貼り付けられると思ったか?
ちょっと考えただけでもとんでもなく手間の掛かることだがな
グローバル変数の「実」アドレスとか*.oには含まれてないから全部解決しないといけない
当然別の関数のアドレスとかもね
コンパイルする時に実アドレスを想定して*.oを吐き出せるはずだが…現実的じゃないね
LoadLibraryとか使えば?DLL Injectionのコードと同じになっちゃうけどww
0887デフォルトの名無しさん
2016/03/31(木) 23:50:35.80ID:Tq9AKUqv実行中のプロセスにアタッチする
って言ってるのに底抜けのアホだな w
あとアドレス情報はデバッグ情報から取得すればいいだけ
アホはデバッグ情報ない場合はどうするんだ?
とか言うだろうけどそんなケースは DLL Injection でも無理だから
0888デフォルトの名無しさん
2016/03/31(木) 23:55:43.08ID:lrEHU6MCアタッチってローダーをコールする+αのことやで
0889デフォルトの名無しさん
2016/03/31(木) 23:56:40.39ID:wytOYZTkめんどくさい奴だな…
> ローダー?
> 実行中のプロセスにアタッチする
ちがうよ、書き換える元だよ
my_malloc()をコンパイルするとmy_malloc_lib.oが出来る
はいそっからどうすんの?
俺の使ってるデバッガは*.oを実行時にリンクできるよ
> とか言うだろうけどそんなケースは DLL Injection でも無理だから
はいダウトwww
DLL Injectionは単に外部シンボルを使うからロードできる
つうかDLLのローダにデバッグ情報とか関係無いぞ
0890デフォルトの名無しさん
2016/03/31(木) 23:58:52.43ID:wytOYZTkあと
> あとアドレス情報はデバッグ情報から取得すればいいだけ
もダウト
「実」アドレス情報がデバッグ情報にあるわけないwww
相対アドレス情報が外部シンボルに関連付けられてるだけだ
どうした?もう眠いか?
0891デフォルトの名無しさん
2016/04/01(金) 00:11:47.22ID:ebD6jQFi> 属性?
OpenProcess(PROCESS_ALL_ACCESS
でメモリの属性を変更してるじゃん
https://msdn.microsoft.com/ja-jp/library/cc429278.aspx
によるとPROCESS_ALL_ACCESSは
PROCESS_VM_WRITE このプロセスの仮想メモリへの書き込みを行うために、 関数がこのプロセスのハンドルを使うことを認めます。
を含んでるからこれでメモリの属性変更してる
これしないでメモリ書き換えようとすると例外が発生するはず
0892デフォルトの名無しさん
2016/04/01(金) 00:17:08.75ID:ebD6jQFiとりあえずもう日付変わったがまだまだ続けるよ
0893デフォルトの名無しさん
2016/04/01(金) 00:21:12.92ID:QUj0XugJpostMessageさんは、実際のコードも出してこないし多分細かいことはあんまりよくわかってない
大きい企業で、俺はコードもかけますよ風のマネージャーかなんかやってんじゃないかな
0894デフォルトの名無しさん
2016/04/01(金) 00:22:50.92ID:ebD6jQFi俺は
ID:wytOYZTk
ID:ebD6jQFi
だがそれは俺に言ってんの?
0895デフォルトの名無しさん
2016/04/01(金) 00:34:13.94ID:vf5GPZ8Mお前のローダーの定義って面白いな
アタッチで何を「ロード」するんだよ w
>>889
> DLL Injectionは単に外部シンボルを使うからロードできる
シンボルあるならそれ使えばいいだけ
何度も書くがスタティックライブラリだと手も足も出ないだろ?
>>891
> PROCESS_VM_WRITE
これはあくまでも権限設定
まあ、100歩譲って API 中で操作してるメモリープロテクション関連の設定を属性って言ってるって思ってやるよ
> これしないでメモリ書き換えようとすると例外が発生するはず
権限のチェックが入ってるから API が失敗するだけ
0896デフォルトの名無しさん
2016/04/01(金) 00:44:59.58ID:ebD6jQFi> アタッチで何を「ロード」するんだよ w
アタッチするのは書き換え先のプロセス
ロードするのは書き換えもとのオブジェクトファイル
なんでスッと理解できないのか…
> シンボルあるならそれ使えばいいだけ
wwwwDLLにはシンボル情報は「常に」あるよ
> 何度も書くがスタティックライブラリだと手も足も出ないだろ?
そりゃDLL Injectionだからな。ただ、スタティックリンクされた関数をDLLで上書きできる
それと手も足も出てないのはお前も一緒だろwww
まだ*.oを実行時にリンクするコードを示せてないからなw
> まあ、100歩譲って API 中で操作してるメモリープロテクション関連の設定を属性って言ってるって思ってやるよ
スゲー負け惜しみwww最高ww
> 権限のチェックが入ってるから API が失敗するだけ
そりゃそうか。逆にAPIを使わずに直接メモリを書き換えたら権限の有無でどうなるんだ?
0897デフォルトの名無しさん
2016/04/01(金) 00:48:14.33ID:TWdLoFti極めてエンジニアには向かない性格だな
欠格事由と言っても良いくらい
0898デフォルトの名無しさん
2016/04/01(金) 00:49:04.42ID:ebD6jQFiとりあえず揚げ足取り合戦はこれぐらいにして、ローダーも理解せずに
どうやって*.oをロードするんだ?
リンクで教えてもらったのは単にメモリを書き換える方法だけだぞ
結局それらをまとめた処理をDLL Injectionって言うんだけど
理解してもらえるまで(またはお前がMy DLL Injectorを作るまで)付き合うよ
0899デフォルトの名無しさん
2016/04/01(金) 00:50:13.04ID:ebD6jQFiさっきから誰宛だ?
0900デフォルトの名無しさん
2016/04/01(金) 00:53:18.83ID:6Qn82sqQあんま読んでねーけど、お前がpostMessageならお前宛なんじゃね?
そうじゃないなら違うだろ
0901デフォルトの名無しさん
2016/04/01(金) 00:54:39.03ID:TWdLoFti0902デフォルトの名無しさん
2016/04/01(金) 00:58:25.84ID:TWdLoFti0903デフォルトの名無しさん
2016/04/01(金) 01:00:10.90ID:ebD6jQFi俺は
ID:yO7JBNvw
ID:wytOYZTk
ID:ebD6jQFi
だが、postMessageなんて一度も書き込んでないけどどういうことだ?
0904デフォルトの名無しさん
2016/04/01(金) 01:03:36.92ID:6Qn82sqQPostMessageくん ≡ ID:yO7JBNvw
=ID:Sejgg9vl
まで読んだ
0905デフォルトの名無しさん
2016/04/01(金) 01:03:55.13ID:17sn2y0Z0906デフォルトの名無しさん
2016/04/01(金) 01:06:20.68ID:ebD6jQFiとりあえずWindowsでDLL Injectionのやり方
http://inaz2.hatenablog.com/entry/2015/08/08/223643
で、ここの最後の行で
> DLLを使わないコードインジェクション
> ここではRemoteCreateThread関数でLoadLibrary関数を呼び出したが、
> WriteProcessMemory関数で実行可能メモリを確保し、
> そこにコードをコピーして直接実行させることも可能である。
> この場合DLLが不要となる一方、利用するAPI関数一式のアドレスを事前に取得し、
> 構造体などの形でコピーしたコードに渡す必要があるため、
> 複雑なコードの実行には適さない。
ちょっとググるだけでこんなん出てきたよ
さあどうする?
0907デフォルトの名無しさん
2016/04/01(金) 01:08:37.84ID:ebD6jQFiPostMessageは上のほうでなんかやり合ってた話題か
とりあえず俺はDLL Injection君でいいよw
0908デフォルトの名無しさん
2016/04/01(金) 01:08:39.14ID:vf5GPZ8Mデバッグ情報だけって思っちゃったか w
何度も書くけどデバッガにできることができないと思う精神構造がよくわからん
>>896
> アタッチするのは書き換え先のプロセス
これはいいけど
> ロードするのは書き換えもとのオブジェクトファイル
意味わからん
書き換え元のオブジェクトファイルも意味わからんし、アタッチにどう関係するのかもさっぱりわからん
しかもローダーを作るとか
なんか壮大に勘違いしてるとしか思えん
> wwwwDLLにはシンボル情報は「常に」あるよ
うんそれは知ってる
でスタティックライブラリは?
上書きするとか言ってるけどアドレスどうやって取得するつもりなんだ?
> まだ*.oを実行時にリンクするコードを示せてないからなw
なんでそんなもんが必要なのかよくわからん
そんなもんリンクしなくてもスレッド停めて自前でエミュレートすればいいだけだし
> そりゃそうか。逆にAPIを使わずに直接メモリを書き換えたら権限の有無でどうなるんだ?
他のプロセスのメモリーをどうやって直接書き換えるつもりなんだよ...
メモリー空間すら理解してないのかよ w
0909デフォルトの名無しさん
2016/04/01(金) 01:11:14.61ID:ebD6jQFiとりあえず>>906でFA
適さないとかいてあるけど、ほとんど不可能といえる
はい終了
とりあえずお前が文系だってのは分かったよ
プログラムなんて手出して大変だったなww
0910デフォルトの名無しさん
2016/04/01(金) 01:13:30.26ID:vf5GPZ8M別にどうもする必要ないだろ
>>882 のリンク先がやってることだし
何を今更って感想しかないわ w
0911デフォルトの名無しさん
2016/04/01(金) 01:16:20.40ID:vf5GPZ8Mいや >>832 はそのやり方と違ってエミュレートはターゲットではやらないから
0912デフォルトの名無しさん
2016/04/01(金) 01:16:53.18ID:ebD6jQFiお前は馬鹿か
> この場合DLLが不要となる一方、利用するAPI関数一式のアドレスを事前に取得し、
> 構造体などの形でコピーしたコードに渡す必要があるため、
> 複雑なコードの実行には適さない。
現実的に出来ないんだよ
出来ないの!
それでまだドヤ顔か?
>>882でやってるのはメモリを単に書き換える「だけ」
*.oをロードするのはとてつもなく大変なんだ?それをお前が理解できてないだけ
で、LoadLibraryを使えば簡単に出来るがそれは>>906でやってるDLL Injection
0913デフォルトの名無しさん
2016/04/01(金) 01:20:38.06ID:ebD6jQFiWindows では (プログラムから呼ぶ)ローダー = LoadLibrary だがなんでスッと出なかった?
超超基本的なAPIだけど?
0914デフォルトの名無しさん
2016/04/01(金) 01:22:32.34ID:vf5GPZ8M必死にググってるところ申し訳ないけど
そこら辺の話はすでに知ってる
だからターゲットで実行する話にはしてない
残念だったね w
0915デフォルトの名無しさん
2016/04/01(金) 01:24:05.27ID:ebD6jQFiつうかターゲットって何だ?
まずは厳密に定義しろ
0916デフォルトの名無しさん
2016/04/01(金) 01:27:08.93ID:vf5GPZ8Mどこにアンカーしてるんだよ...
もう無茶苦茶だな w
で、ローダーを作る(>>884)ってどう言うことよ
0917デフォルトの名無しさん
2016/04/01(金) 01:27:51.39ID:ebD6jQFiやべーこえーwww
何言ってんだこいつww
0918デフォルトの名無しさん
2016/04/01(金) 01:28:58.51ID:ebD6jQFiLoadLibraryと同等の処理を>>832に実装する事だろ
0919デフォルトの名無しさん
2016/04/01(金) 01:29:11.93ID:vf5GPZ8M>>700 が言ってるリークをしてるかを確認したいプログラムのこと
0920デフォルトの名無しさん
2016/04/01(金) 01:30:09.70ID:ebD6jQFiそうすれば>>832はお前の望みのものが出来上がる
ただし、出来ない場合は不可能という事になる
そんな事をお前はデバッガが出来るからという曖昧な理由だけで勧めてた事になる
0921デフォルトの名無しさん
2016/04/01(金) 01:32:53.41ID:ebD6jQFiわかったよ
じゃあエミュレートって何だ?
例えばmallocと同等のコードを実装する事か?
でそれをする話ではないという事か?
0922デフォルトの名無しさん
2016/04/01(金) 01:34:36.62ID:vf5GPZ8Mホントに理解してないんだな
デバッガで malloc にブレークかけて引数を取得して
malloc と同じ動作(エミュレート)+ リークを検出するための情報取得 ← これはデバッガ側で行う
で呼び出し元に戻すだけ
もちろん手動じゃなくて、プログラムでな
0923デフォルトの名無しさん
2016/04/01(金) 01:36:28.47ID:ebD6jQFiだから分かったって
それを具体的にやるコードの提示がないだろ
で、LoadLibraryと同等の処理を実装しないと駄目だからほとんど不可能と言ってる
同じ事何回書かせんだよ
0924デフォルトの名無しさん
2016/04/01(金) 01:37:06.93ID:vf5GPZ8Mだからそんなもんは必要ない
必要なものは >>832 の開始時点ですでにすべてメモリ上にある
もちろん標準のローダーを使ってな
0925デフォルトの名無しさん
2016/04/01(金) 01:38:15.42ID:vf5GPZ8M> 同じ事何回書かせんだよ
俺の台詞だろ w
0926デフォルトの名無しさん
2016/04/01(金) 01:39:17.16ID:ebD6jQFiねーよwww
int counter = 0;
void* my_malloc(void *mem) {
++counter;
return 元のmalloc(mem);
}
これを動かすためにはまずコンパイルしないといけないよな?ここまではいいか?
0927デフォルトの名無しさん
2016/04/01(金) 01:40:26.81ID:ebD6jQFiで、my_malloc_lib.o が出来るだろ?
それをどうやって>>832の方法でメモリに書き込むんだ?
それをもう少し具体的に言ってみ?
そうすればお前もそのうち気付くよ
0928デフォルトの名無しさん
2016/04/01(金) 01:42:17.73ID:ebD6jQFiはmallocとfreeが混ざって変になった…
int counter = 0;
void* my_malloc(size_t len) {
++counter;
return 元のmalloc(len);
}
0929デフォルトの名無しさん
2016/04/01(金) 01:43:37.56ID:vf5GPZ8M>>832 を実行するルーチンにリンクしときゃいいだけ
メモリに書き込むとかアホなこと考えなくても、標準のローダーがロードしてくれるよ w
0930デフォルトの名無しさん
2016/04/01(金) 01:45:45.29ID:ebD6jQFiわかった
my_malloc_lib.oをリンクして起動したよ
で?
厳密に行こうぜ
0931デフォルトの名無しさん
2016/04/01(金) 01:57:14.88ID:05qiQTu70932デフォルトの名無しさん
2016/04/01(金) 01:57:36.04ID:vf5GPZ8Mで?
>>832 の何がわからんと言うんだ?
本気で知りたいなら適当なデバッガでブレークかけたりして色々試せ
0933デフォルトの名無しさん
2016/04/01(金) 01:59:15.25ID:ebD6jQFi誤魔化すなよ、おい
APIの話してんだろ
0935デフォルトの名無しさん
2016/04/01(金) 02:03:51.35ID:ebD6jQFi最後はアセンブラ(機械語)レベルできちんとmy_malloc()をコールするコードを書き込むって言えよ
一度うまく行けばずっと使えるが、お前はどうせ知らないだろ
そんな曖昧な状態でずっとこんな事を勧めてたんだよお前は…
とりあえず最後にちゃんとアセンブラを書けよ
0936デフォルトの名無しさん
2016/04/01(金) 02:05:53.07ID:vf5GPZ8MDLL Injection しか知らん知ったかが必死にいちゃもんつけてるだけ
残念なことにメモリ空間の知識がないこととか
>>793 のリンク先でも注釈に WriteProcessMemory って書いてあるのにコードは書き換えられないと思ってたとか
ボロがどんどん出てる状態 w
0937デフォルトの名無しさん
2016/04/01(金) 02:07:10.25ID:ebD6jQFiDLL Injection(WindowsだとLoadLibraryを使った一連の処理で、Linuxはdlopenを使った一連の処理)
アセンブラの知識は必要ないし俺もコードを何度も書いてるし、ググれば簡単に出てくる
お前は最後まで文系だったな
デバッガーで出来るから出来るはずでごまかし続けたな
ググっても実コードは全然出てこないし、本人も全然最後まで分かってないし
0938デフォルトの名無しさん
2016/04/01(金) 02:08:07.99ID:ebD6jQFiあげ足取りはいいから、ちゃんと動くコードを書くか提示しろよ
0939デフォルトの名無しさん
2016/04/01(金) 02:09:03.03ID:vf5GPZ8M> 最後はアセンブラ(機械語)レベルできちんとmy_malloc()をコールするコードを書き込むって言えよ
だから書く必要なんてない
my_malloc() はデバッガ側で実行するんだよ
0940デフォルトの名無しさん
2016/04/01(金) 02:10:07.79ID:TWdLoFti0941デフォルトの名無しさん
2016/04/01(金) 02:10:26.75ID:ebD6jQFi> my_malloc() はデバッガ側で実行するんだよ
だからそのコードを書けよ
なんで頑なにコードを書かないんだ?
0942デフォルトの名無しさん
2016/04/01(金) 02:10:45.30ID:vf5GPZ8M> あげ足取りはいいから
事実だろ
レス番示そうか? w
0943デフォルトの名無しさん
2016/04/01(金) 02:13:25.75ID:ebD6jQFiお前メモリ書き換えられるだけでドヤ顔はやめろよ
最終的にmy_malloc()を呼び出すコードを書けよ
文系のお前には一行もかけないだろうけど
0944デフォルトの名無しさん
2016/04/01(金) 02:14:31.57ID:TWdLoFti0945デフォルトの名無しさん
2016/04/01(金) 02:14:59.46ID:ebD6jQFiお前だってローダーって何とか言ってるし、デバッグ情報を使ってDLLロードしろとか
言っちゃってるだろwww
0946デフォルトの名無しさん
2016/04/01(金) 02:16:52.93ID:vf5GPZ8Mどこがアホかを指摘してくれ
夜中まで下らん知ったかに構ってるってるところ
って言うなら納得するしかないけど w
0947デフォルトの名無しさん
2016/04/01(金) 02:18:37.40ID:ebD6jQFi>>943の
> 最終的にmy_malloc()を呼び出すコードを書けよ
を早くしろよ
お前が頑なに拒んでるのが最大の知ったかだろ
0948デフォルトの名無しさん
2016/04/01(金) 02:18:39.62ID:vf5GPZ8M> お前だってローダーって何とか言ってるし、デバッグ情報を使ってDLLロードしろとか
> 言っちゃってるだろwww
そんなことをいった記憶はないのでレス番よろしく
0949デフォルトの名無しさん
2016/04/01(金) 02:20:01.00ID:ebD6jQFi肝心の別関数を呼び出すコードをここまで書かずに、引っ張り続けてるだけ
0950デフォルトの名無しさん
2016/04/01(金) 02:22:39.17ID:ebD6jQFi>>887で今後ローダーが必要な事に気付いてない
デバッグ情報がないとDLL Injectionが無理だといっている
0951デフォルトの名無しさん
2016/04/01(金) 02:26:29.54ID:vf5GPZ8M> >>887で今後ローダーが必要な事に気付いてない
必要なかっただろ w
少なくともローダーを作るとかは
> デバッグ情報がないとDLL Injectionが無理だといっている
まあ、これはちょっと筆が滑ったな
スタティックライブラリが念頭にあったからな
0952デフォルトの名無しさん
2016/04/01(金) 02:29:38.59ID:ebD6jQFiとりあえず、俺らが有能か無能かはどうでもいい
> 最終的にmy_malloc()を呼び出すコードを書けよ
これを証明してお前の言ってるやり方が実際に出来る事をコードを書くかリンクを貼れ
手動でできそうなことはもうわかってるから (それも曖昧だがな)
0953デフォルトの名無しさん
2016/04/01(金) 02:30:12.21ID:TWdLoFti>my_malloc() はデバッガ側で実行するんだよ
ここだね。debuggerとdebugeeのアドレス空間は分離されてるので、「元のmalloc(len)」の値はdebugeeでは無効
0954デフォルトの名無しさん
2016/04/01(金) 02:35:25.22ID:vf5GPZ8M>>922 読んでもわからんなら諦めろ
デバッガ側で実行するから単純な関数コールだよ
ターゲット側の malloc と free を使う(情報はデバッガ側で取得/管理する)なら取得/管理するルーチンを呼ぶだけ
後はそのまま実行を継続すればいい
デバッガ使ったことあれば普通に理解できると思うが
0955デフォルトの名無しさん
2016/04/01(金) 02:37:47.60ID:ebD6jQFiまだコード書かないよ…
まず、デバッガ側で実行というのはどういう事だ?
普通プログラムをデバッガに読み込ませて実行させる事をいうぞ?
それと思いっきり手動に見えるが…もう手動でないと無理でFAでいいか?
0956デフォルトの名無しさん
2016/04/01(金) 02:46:09.49ID:ebD6jQFiWindowsにべったりな方法だが…メモリに書き込む方法は具体的に分かった
mallocをmy_mallocに置き換えるのはデバッガを駆使すれば手動では可能(なはず)
ただ自動でやる方法は不明
でいいだろ?
0957デフォルトの名無しさん
2016/04/01(金) 02:52:51.26ID:vf5GPZ8M> 普通プログラムをデバッガに読み込ませて実行させる事をいうぞ?
デバッガのアタッチとか使ったことないのか?
デバッガが読み込んでるのはシンボル情報とかだよ
実行は当然だけど別プロセス(別メモリー空間)で実行される
ブレーク使って malloc が呼び出されたことと、その時の情報を取得すればいいので malloc 自体はターゲット上で普通に実行すればいい
> それと思いっきり手動に見えるが…もう手動でないと無理でFAでいいか?
Excel の例出しただろ?
手動でできることは全て自動でできるんだよ
そのための API だし
0958デフォルトの名無しさん
2016/04/01(金) 02:53:43.21ID:lbbURRqO単にブレークポイントを任意のアドレスにかますことができるだけなのでは?
0959デフォルトの名無しさん
2016/04/01(金) 02:54:17.23ID:vf5GPZ8M> mallocをmy_mallocに置き換える
全然理解できとらんやん...
0960デフォルトの名無しさん
2016/04/01(金) 02:55:40.13ID:vf5GPZ8Mメモリー書き換えたり
デバッグ中にコード書き換えたりできるよ
てか、そう言う機能使ったことないの?
0961デフォルトの名無しさん
2016/04/01(金) 02:58:48.13ID:ebD6jQFiとりあえず、デバッグするんじゃないんだよ
単純にメモリリークをチェックするだけなのになんでデバッガ必須なんだよ
コードが書かれてるリンクを提示したのは何だったんだよ…
そこまではデバッガ要らないだろ…諦めるなよ
> 手動でできることは全て自動でできるんだよ
それは分かったよ…
手動でできる事は全部自動で出来る(ただし具体的な方法は知らない)
が結論でいいよな?
0962デフォルトの名無しさん
2016/04/01(金) 03:02:09.19ID:ebD6jQFiそれでメモリリークのチェックをするって言ってるだろ
理解してないのはお前だろ
それとも、一旦別の場所に飛ばしてカウンターなり増やしてもとの場所に復帰させる
「手動」でって言いたいんだろ?
そして手動で出来る事は全て自動で出来るから具体的な方法は知らなくても
このスレではそういっておけばいいといいことだろ?
0963デフォルトの名無しさん
2016/04/01(金) 03:07:48.16ID:ebD6jQFi素晴らしい推論だよ
推論さえ正しければ最終的にコードなんて書く必要ないよな、絶対出来るはずだもんな
俺も何でも出来そうな気がしてきた
0964デフォルトの名無しさん
2016/04/01(金) 03:17:48.51ID:ebD6jQFi当然「普通」のプログラムがデバッガと全く同じ動作なんて出来ないと思うけどな…
0965デフォルトの名無しさん
2016/04/01(金) 03:21:34.83ID:ebD6jQFi突っこまれそうなんで捕捉しておくと確かにWindowsのAPIにはデバッガと似たような動作をするAPIはある
それ使えば出来るって言いたいんだろ、俺は詳しくは知らんけど
0966デフォルトの名無しさん
2016/04/01(金) 03:28:17.05ID:ebD6jQFihttp://d.hatena.ne.jp/Hossy/20071120
WindowsAPIにブレーク張るコードがあったよ
これで特定の場所でブレークさせて別の場所に飛ばして戻すとか出来そうだな
0967デフォルトの名無しさん
2016/04/01(金) 06:54:22.55ID:cIUJiKQrなかなかいいページじゃん
ごく「普通」のプログラムでいけてるし
これでデバッガが特殊なプログラムだと言う変な思い込みが無くなればいいんだが...
0968デフォルトの名無しさん
2016/04/01(金) 07:16:21.80ID:lbdOT+5F0970デフォルトの名無しさん
2016/04/01(金) 07:44:47.94ID:mip+hcrZ年度末だというのにお前ら暇だねえ
0971デフォルトの名無しさん
2016/04/01(金) 09:12:42.75ID:TsVr6Gkeなんか見覚えがある記事だな
初っ端でやるべきファイルクローズがぬけてたような
0972デフォルトの名無しさん
2016/04/01(金) 09:43:46.18ID:Ttjvs4g30973デフォルトの名無しさん
2016/04/01(金) 09:54:45.01ID:TsVr6Gke思い出した
ファイルクローズするためのハンドルが最初のイベントで来るから
それを受け取る変数と処理がぬけてる
クローズ&再オープンが必要になるケースは少ないだろうけど
0974デフォルトの名無しさん
2016/04/01(金) 21:54:04.46ID:lTa0iJ4H0975デフォルトの名無しさん
2016/04/02(土) 01:15:45.58ID:d6zeFNrQいちいち目くじら立ててるとハゲるぞ
0976デフォルトの名無しさん
2016/04/02(土) 02:17:39.05ID:nww+ZoJw0977デフォルトの名無しさん
2016/04/02(土) 03:16:09.35ID:oec87dyp何がダメなん?
0978デフォルトの名無しさん
2016/04/02(土) 10:12:42.88ID:w7dPIT5N0979デフォルトの名無しさん
2016/04/02(土) 12:40:53.53ID:XtnCgjGk0980デフォルトの名無しさん
2016/04/02(土) 13:52:31.49ID:EwvTfYNw0981デフォルトの名無しさん
2016/04/02(土) 18:53:52.73ID:nnV+XJIiなお、美しさそのもはここでは否定していない
0982デフォルトの名無しさん
2016/04/02(土) 18:56:35.51ID:tgAORIfk0983デフォルトの名無しさん
2016/04/02(土) 18:57:56.43ID:tizL1M550984デフォルトの名無しさん
2016/04/02(土) 23:40:25.58ID:VaLFPnjAそれが他人から見て稚拙であっても。
だが>>978はスレ違いの糞レスを投下した糞野郎。
0985デフォルトの名無しさん
2016/04/02(土) 23:55:51.69ID:3uS6uKWSおまえ結局、後輩を頭ごなしにdisってさ
一日の長にすがってるだけだろ
決して後進を育てられないつまらん先輩だが
心配しなさんな、おまえさんについてく後輩なんかいないから
0986デフォルトの名無しさん
2016/04/03(日) 00:02:46.65ID:05TA48kb頭ごなしに dis るに限るが。そのコードの内容にあわせろと。
0987デフォルトの名無しさん
2016/04/03(日) 00:27:51.51ID:ZT/2NYWzC++相談室 part124
http://echo.2ch.net/test/read.cgi/tech/1459610544/
0988デフォルトの名無しさん
2016/04/03(日) 06:35:37.36ID:IYDaitRxiostreamの是非はさて置き、
このスレで頭ごなしにdisられるほど低能な発言を繰り返してるお前が言うと馬鹿っぽいぞ
0989デフォルトの名無しさん
2016/04/03(日) 10:48:12.94ID:NaCJnRwM0990デフォルトの名無しさん
2016/04/03(日) 10:49:24.28ID:NaCJnRwM「wstr.length();」で文字数3が返るんですが、ファイルから
stringで読み込みmbstowcsで変換、又はwstringで読み込みして
length()を使うとバイト数で表示されてしまいます。
色々調べましたが、ファイル読み込みで文字数を返す方法が分かりません。
どのようにしたらよいのでしょうか?
0991デフォルトの名無しさん
2016/04/03(日) 11:38:20.75ID:ZT/2NYWz#include<cctype>
int main() {
std::setlocale(LC_CTYPE, "");
}
してもダメ?
0992デフォルトの名無しさん
2016/04/03(日) 11:55:32.15ID:IjurGRr1>そうして標準的なインデントの付け方に合ってないところや、変数名の大文字/小文字が変なところに気づくようになる。
>
>この時期に典型的なことは「水ぶくれのフジツボみたいだ。一貫したコーディング規則がなきゃだめだ」みたいなことを言って、
>次の日をチームのためのコーディング規則を書くために使い、そのあと6日間で「唯一正しい括弧付けのスタイル」について議論し、
>そのあとの3週間を古いコードが「唯一正しい括弧付けのスタイル」に合うよう書き直すのに費やすが、
>それに気付いたマネージャから全然お金にならないことに時間を使っていることで怒鳴りつけられ、
>それでソースに手を入れる必要が出た時ついでにフォーマットを直すのでも別に悪くないと思い直し、>
半分だけ「正しい括弧付けスタイル」という状態になってしまうが、そんなことはすぐに忘れ、そしてすぐまた別な何か、
>1つの文字列クラスを別な文字列クラスで置き換えるというような、お金になることとは無関係なことに心を奪われるのだ。
ttp://local.joelonsoftware.com/wiki/間違ったコードは間違って見えるようにする
万古不易ってカンジ?
0993デフォルトの名無しさん
2016/04/03(日) 11:57:55.84ID:NaCJnRwMコード貼ってなくてすいません。
ダメでした。
ネットで調べた結果は、あとは1バイト目を調べて取得していくしかなさそうと思ってました。
0994デフォルトの名無しさん
2016/04/03(日) 14:58:05.44ID:NaCJnRwM中途半端に直さず、ゼロベースでコードを書き直して御指摘のコードを追加で上手くいきました。
ありがとうございました。
0995デフォルトの名無しさん
2016/04/03(日) 23:58:14.05ID:dph3juVF0996デフォルトの名無しさん
2016/04/04(月) 00:08:15.79ID:hMDKrGrS0997デフォルトの名無しさん
2016/04/04(月) 03:23:44.21ID:PzbFPT0/0998デフォルトの名無しさん
2016/04/04(月) 08:47:18.20ID:OJQ3obmT0999デフォルトの名無しさん
2016/04/04(月) 08:55:48.60ID:M3vqhMBk1000デフォルトの名無しさん
2016/04/04(月) 09:17:08.06ID:z/Tw9PUp10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 42日 16時間 40分 41秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。