C言語なら俺に聞け 148
■ このスレッドは過去ログ倉庫に格納されています
一周まわって、何かあったらどんどんexitするようにしたよ
メモリリークしてるかも? ⇒ 一応プロセス再起動
処理が滞ってきたかも? ⇒ 一応プロセス再起動
便利なOSを使うようになってからどんどん怠ける一方よ めっちゃプロセス起動速いOSあってもいいよねと思ったけど、結局LWPのスレッドになるんだろうな メモリリークとか、そこら辺勉強するのにおすすめの方法ある たんにfreeとかdeleteすればいいだけだからなあ。
オブジェクト指向・デザインパターン一般の教科書読めば自然に身につきそう メモリーリークの勉強は本で学ぶよりも
痛い思いをして体で覚える方が身につく
個人の感想ですけどw C言語は言語レベルではオブジェクト指向はサポートされていない >>743
しかし身に付いても中々メモリリークのバグはなくならないよな。
やはりその辺が心配なら他の言語使った方が良いと思う。 クソコードに揉まれてクソコード書きになった人も多いから、クソを体験しろとも言えんな…
長い時間かけてデバッグして身についたもんは確かにあるけど、人生は貴重だからな。 インスタンスのライフタイムさえ設計すればメモリリークなんぞ発生しないと思ってるわ 誰もがそう思うのだよ。
しかしこの世は思い通りにはならんのだ。 プログラムは思った通りには動かない、書いたとおりに動く 俺はC使い始めて3年のペーペーだけど、リークなんてやらかしたことないし、今後もやらかすと思えない
敗北を知りたい >>752「malloc()使ったら負け」
strdup()「……」 リスト構造でありそうな、作った所と殺すところが入れ子になり難いのは気をつかう C++erだけどmallocなんてもうしたくない
まあ、勉強するときにしてるけど あと開放された後なのに、そのポインタのデリファレンスしてたり
別スレッドで確保した時、そこに割り当て発生〜別スレッド側の正当な書き込み
→ 不当な側のデリファレンスでブッコワレーターな値 とか C++だと工夫すればかなり自動化できるんじゃないか?
Cと同じようにも書けるからハマる時はハマるだろうけど。 734 デフォルトの名無しさん (アウアウカー Safb-dUTK)[] 2018/10/18(木) 09:19:15.80 ID:qf9NxgCDa
>>707 に誰も挑戦しねーし。。。
千の位は1000で割れば数が出るし、余りが千の位を引いた数だから、今度は百の位、十の位ってする。
各位の数字に16進数の30(文字コードで数字の0)を足すと文字列の完成。
(Cだと末尾に¥0も必要。“0000”とか文字配列作れば自動で挿入される)
大まかなロジック教えれば書けるだろ。
分かってみれば大した事してないんだよ。 ; SAMPLE3 12,15,42
PROG1 START MAIN
MAIN LD GR0,MIN
LAD GR1,0
LOOP CPA GR0,MAX
JPL LOOPEND
ADDA GR1,GR0
ADDA GR0,STEP
JUMP LOOP
LOOPEND ST GR1,SUM
LAD GR2,0
LAD GR0,0
CPA GR1,BMAX,GR2
L1000 JMI L1000END
SUBA GR1,BMAX,GR2
ADDA GR0,STEP
CPA GR1,BMAX,GR2
JUMP L1000
L1000END ADDA GR0,ZERO_S
ST GR0,STR,GR2
ADDA GR2,STEP
LAD GR0,0
CPA GR1,BMAX,GR2 >>753>>754
何をしたらリークするのか逆に聞きたい
仕様を読んでないアホな顛末は要らんです L100 JMI L100END
SUBA GR1,BMAX,GR2
ADDA GR0,STEP
CPA GR1,BMAX,GR2
JUMP L100
L100END ADDA GR0,ZERO_S
ST GR0,STR,GR2
ADDA GR2,STEP
LAD GR0,0
CPA GR1,BMAX,GR2
L10 JMI L10END
SUBA GR1,BMAX,GR2
ADDA GR0,STEP
CPA GR1,BMAX,GR2
JUMP L10
L10END ADDA GR0,ZERO_S
ST GR0,STR,GR2
ADDA GR2,STEP
ADDA GR1,ZERO_S
ST GR1,STR,GR2
OUT STR,LEN
RET
MIN DC 1
MAX DC 140
STEP DC 1
SUM DS 1
BMAX DC 1000,100,10
ZERO_S DC #0300
STR DS 4
LEN DC 4
END >>742
>>748
それは甘いと思います
>>752
気がついていないだけだと思います まあ、CASL2のコード載せたからって書くやつが現れるなんて思ってないが。。。
本っ当にお前ら終わってるな。
プログラマーになり損なった俺より、なお悪いわ。 >>764
malloc()等でメモリ確保してfree()しなければメモリリークになる。
その他strdup()のように内部でmalloc()を使っているやつは同様。 >>769
> 仕様を読んでないアホな顛末は要らんです >>770
何をするとリークするかを書いただけだが? >>771
だからそんなアホなレスは要らんです、と書いたんだが? >>738
はいはい
精神科医ってこう言う輩の相手するんだよな...
大変なお仕事だわ w 「私の書いたプログラムは絶対にメモリーリークは発生しません。バグもありません。試験は不要です」
こういうこと、一度は言ってみたい たったこれだけでリークするコードを仕込んだことになる。
もちろん仕様書通りの動作だけど、ノウハウ集を見るまえに気づくのはわりと難しいかもね。
p = realloc(p, 1 * sizeof(int)); >>772
しかし君はアホだから丁度マッチした適切なレスではないかな。 >>775
そういった意味で realloc は若干まどろっこしいね。
失敗時は元と同じポインタを返して errno を設定してくれる方が変数のやりくりが簡単になりそう。 >>775
それでリークするかどうかはその他の部分がどう書かれているかによるのでは? 実際はmalloc失敗した時点でリークもへったくれもないと思うよ ああ。失敗した時か。確かにリークするな。
そういう時はもう処理続行不能って事にしてexit()させてる。 >>778
realloc() が 0 を返すと p の持っていた値は失われ、free() できなくなる ptr = malloc()
p = ptr
p = realloc(p, ...) >>780
スレッドでの処理だとそのスレッドだけ終了させればよかったりするから、きれいに解放できないと具合が悪いな。
exit していいケースなら exit がいいと思う。 内部でメモリ確保しまくるライブラリを使う仕事に当たっちまったら、思いっきり痛い目に会えると思うよ >>715
俺は書かないと言ったろ。理由は>>705参照。
そして俺は最初に解法も示してる。>>690参照。
つっても理解出来てないようだから、もう少し(非技術的な)解説をしよう。
現状、俺以外の他全員誰も褒めてないんだから、この際理由を『詳しくない』俺にわざわざ求める必要がないだろ。
しかし、何故か俺に意見を書かせようとする輩が多いだろ。お前も含めて。
それがアフィカスじみてて、結果的にスレを潰すから、俺はそれには乗らない、と言ってるんだよ。
見れば分かるとおり、スレの流れが異常だろ。
俺が何度もこのメタ議論を出している理由は、お前らゆとりが全くこの辺について無知だからだ。
お前らゆとりは、オンラインコミュニティは潰していいものだと思っている。
見方が本当に刹那的で、自分の質問に対しての答えが得られれば後はどうなってもいいと思っている。
(ただ乗り出来るし、勝手に発生するものだと思っている)
実際は、オンラインコミュニティだって、成熟するには時間も労力もかかる。
そこがどんなに(お前にとって)糞であれ、住めば都だから住人が居るわけで、そんなに簡単に潰していいものではないんだ。
ゆとりが老害老害と連呼しながらも2chにへばりついているのも、ちょっと考えればおかしいと気づけるだろ。
2chは古いし、年齢層は高い。これは事実で、実際、老害年齢層の存在確率は他のコミュニティよりも高い。
しかし、結局の所、ゆとり流では「既読疲れ」みたいなコミュニティしか形成出来なかったんだよ。これも事実だ。
だからお前らがここに文句を言いつつもへばりついているわけでさ。
それなのに、ゆとり流をここに持ち込もう、というのは全くの筋違いだ。それは2chを破壊するから止めろと言っている。
ゆとりには長期的な視野がない。2chに色々問題があるのも事実だけど、ゆとりに長期的視野と運営能力があれば、
今現在の20代は全員ゆとりなんだし、人数は揃っているのだから、
「ゆとりチャンネル」(通称ゆとりちゃん)が出来ても全くおかしくない状況だろ。
それが出来ないって事は、お前らゆとりにもかなり問題がある、ってことでさ。それは自覚した方がいい。 とはいえ、2chの問題点が目に付くのは理解出来る。
ただ、それに関して「何故そうなっているのかを理解出来ないのに文句を言っている」のが、
全く使えない意識高い系新入社員と同じ事になってる事にも気づいた方がいい。
お前らは完全に空回りしているんだよ。
ハロワも同じだろ。「何故世界中の誰も20年間それを修正しなかったのか」を理解出来ない癖に、
「俺のハロワ、凄いだろ」なんて言っちゃう辺りが痛い。
ただ、それは若さの特権だから、本当にそう思うのなら主張すればいいし、
ゴミなのを誰も褒めないんだから、ここのコミュニティもまだ正常、ってわけだ。
それで、話を戻すと、ゆとり流の無知と横暴は2chを潰すから止めろ、と言っている。
とはいえ、おそらくゆとりには悪気はない。これが話が通じない根本の原因だ。
しかし、2chにはゆとりを排除するシステム自体がなく、へばりつかれたらどうしようもない。
だから俺はゆとりを教育してやろうとしているわけでさ。2chに合う奴だけが2chに来ればいいのであってね。
笑顔で人を殺しても、殺人は殺人なんだよ。ゆとりはこれを理解出来てない。
同様に、どんなに上手に敬語を使っても、スレを毀損しているようでは駄目なんだよ。
ゆとりは乗っ取り行為が酷すぎる。しかもそれを自覚出来てないのが最悪。 お怒りは理解しますけど、長い。もっと簡潔に書こうよ >>787
文句があるのなら、異常な流れになる前に、お前が何とかして終わらせておけ。
それも出来ず、やろうともせずに文句だけ言ってるのだから、お前も相当のゴミだぞ。 >>776
>>775だけを見て同じ方向を向く人たちには言われたくないなw >>788
匿名掲示板なんて、誰が何書いても咎めようがないし
そういうことで腹を立てても何も得しないと思うけど
もっと大人になろうよ >>790
効果はあるんだよ。だから書いてる。
正確に言えば、効果がある奴には効果がある、だが。
はっきり言えば、君の考え方もズレてるんだよ。
コミュニティは、オンラインであれオフラインであれ、存続する為には新人を受け入れるしかないんだよ。
だから、ゆとり世代以降を全員閉め出す、というのもまた間違いだし、
後10-15年後にはゆとりが社会の主力になるんだから、
それまでに駄目なところを鍛え直すのは上の世代の責任でもあるんだよ。
(君の考えに関係なく、俺達はゆとり世代に未来を託すしかない)
だから俺は俺なりの方法でやってる。それで成果も多少は出てる。
お前は何もしようともしてないのに文句だけ言ってるクズだよ。
ネットだから何をやってもいい、ではないんだよ。
同様に、ネットだから何もやらなくてもいい、でもない。
ネットだから咎めようがない、でもない。
まあ君には通じないとも思うけど。 有益なことなら読んでいるが
長い文章書かれても、大概の奴は読まないだろ
読まれれば効果が有るかもしれないが、
読み飛ばされても文句は言えない事は理解しないと >>793
> 読み飛ばされても文句は言えない事は理解しないと
理解してるぞ。というか、当たり前だろ。お前はアホなのか?
まあお前も理解出来てないのだろうが、なんだかんだでみんな読んでるんだよ。
そのうち分かるようになるよ。
それ以前に、2chの『長文』ごときで無理な奴はプログラマは無理だし。 たまに上から目線で長文書くバカいるけど誰も読まないんだよな
何故かって冗長なだけで大した事書いてないから 中身のある、読む価値のあるレスなら長文でもちゃんと読むが、ID:+6TFZypL0のは斜め読みしてめんどくさいだけのやつダナーと思いながら適当に読み飛ばしてる。 >>795
そういうことにしたいのはお前が馬鹿だから。
実際は、賢い奴ほど読んでる。
正確には、賢くなる過程で大量のドキュメントを読む必要があり、結果、
賢くなった奴はおしなべて読む速度が速く、読むことに関してコストがかからないからだが。
そして、俺の意図は馬鹿にはどうせ伝わらないから、俺もそれでいいんだよ。
長文ガー、なんて奴は最初から相手にしてない。
三行で、一行で、というのもまた自由だが、
現代プログラマにドキュメントの読み込み能力がかなり必要なのも事実だし、
これは今後さらに拍車がかるのも目に見えているから、
2chの長文に手こずる程度ならマジで国語からやり直した方がいいぞ。 >>797
国語の能力に関係なく、攻撃的で、感情的で、実のない部分の比率が高い文章は誰にとっても読みにくいと思うぞ。
汚いコードを読みなれてそういうのを読むのが上手くなったからって、自分のアウトプットするコードは論理的かつ明瞭でキレイでありたいと思わない? >>798
何が言いたいのか分からん。
その君の文章が「論理的かつ明瞭でキレイ」だとでも思っているのか?
俺は俺なりの方法で対処してる。
読むかどうかは当然読み手側が決める。それでいいという前提で書いている。
君がもっと上手く対処出来るというのなら、君がやればいいだけ。
おかしな流れにならなければ、俺がわざわざ時間をかけて長文を投下することもない。
だから、君が見事に、アホ共を捌き、流れが正常化していれば、俺が出張ることもない。
君が俺にこの手の文を投下させたくないのなら、君が実力を見せればいいだけだ。
やってから言えよ。 長文連投よりはアホがアホなこと書いてる方がマシだな。 5ちゃんで上から目線で長文書く奴の特徴は驚く程共通してるんだよな
例外無く論理的思考が欠如しているから要点をまとめる事も出来ないんだよ >>801
馬鹿こそそういうことにしたがるのだが、
実際、必要な文章量は、認識/知識のギャップに比例するんだよ。
実例を挙げると、>>653,679、ゴミだね、でしかない。
賢い(知識のある)奴にはこれで十分だし、
無理な奴にはグダグダ説明が必要なだけ。
そして俺はお前らがこの件(メタ議論)については無知だと見てグダグダ説明してるだけ。
そもそもお前らが賢ければこんな事にはならないし。
ただ、そういう、「この場合にはこれ」みたいな定型的な屁理屈返しはマジでゆとりに多い。
そういうのも止めた方がいいと思うぞ。誰の為にもならない。
俺も、何度もその返しは見てきた。
それで、誰も俺みたいな返しをしてこなかったから、
お前らゆとりが調子こいて「これは使える」と勘違いしているのだろうけど、
それは単に見捨てられてるだけだぞ。理解出来てないのだろうが。 >>799
>>>798
>その君の文章が「論理的かつ明瞭でキレイ」だとでも思っているのか?
個人的には >>798 は読みやすいんだが、ID:Av8doxl90 は非常に読みにくい
たとえば >>797 は文脈・論理の線が、不適切な日本語を使用しているせいで滅茶苦茶だ
>>797
>実際は、賢い奴ほど読んでる。…@
>正確には、〜コストがかからないからだが。…A
この「正確には」が、読み手を混乱させるミスリード語。
「正確には」と書く以上、すでに述べた@と同格言い直し内容の後続があるかと期待すると、裏切られて、@の理由を示すAが来る。
>そして、〜伝わらないから、俺もそれでいいんだよ。
「そして」が意味不明、何と何が「そして」で続くのかさっぱりわからない。
「そして」を使うのなら、
「俺の文が、馬鹿には読むコストのかかる文章であったとしても」→「馬鹿にはどうせ俺の意図伝わらないから」→「俺はそれでもいい」…B
と、A部分のキーワード「コスト」という単語を使うことによって、AとBが意味の上でつながっていることを明示するべきだ
Bの冒頭を省くから「そして」が宙に浮く
>>799
>おかしな流れにならなければ、俺がわざわざ時間をかけて長文を投下することもない。
上で示したように、君の文章は「おかしな流れ」そのものといっていい
スレが「おかしな流れ」であるとき、それを正すのに「おかしな流れ」の文章が使えるとでも思っているのか? >>801
>上から目線で長文書く奴の特徴
>論理的思考が欠如している
感情にまかせて思いついた単語を羅列するあまり、
前半と後半の意味の整合性がとれていなかったり、前半と後半をつなぐ接続詞が不適切であったり、で、
はっきりいって脈絡がない
書いている本人はテンポ良く文章を量産できる「頭のいい自分」に酔いしれているのだろうが、
実際には量産されているのはポンコツ文 長文をゆっくり書いていられるゆとりのある人はいいなあ ポンコツかどうかはコード書かせれば分かるだろ。
この世界では他がポンコツでもコードが書ければ正義だ。 >>802
すまん。俺には知識もないし賢くもないので
もしもあなたさえ良ければ>>653のゴミな点を指摘してもらえると嬉しいな。 >>806
いくらコードが書けても設計通りに書けないなら駄目じゃん >>807
hello worldの存在意義は、
その言語に初めて触れる人に、
言語の規格にきちんと準拠して、
最小限の記述で、
きちんと動作する、
何かのプログラムを見せることだよ。
どんな設計スタイルがいいとか教えることじゃない。 hello, worldって
コンパイラをインストールした後
動作確認する為のテスト用だと思ってた ゲーム機ハックした人が最初に実行した自作アプリがhello worldだったとかなんとか。 >>808
設計通りに書けない奴はコードが書ける奴とは言わんだろ。 >>809-810
どっちも正しい。
>>811
GBAハックした時は点を一個表示するのが最初だった。
Hello Worldは二番目。 adjtimeって何秒まで調整できるの? 2145秒? Linuxというかglibcならmanページに書いてあるよ。 make worldでX立ち上がったときは
感動したものだ それで思い出した
プロジェクトでのmakefile、作成が終わった時に
バナー文字で「make end!」って表示するんだけど
ある人のだけは「big cock!」に書き換えてたっけ
ここには関係者いないよね? C言語だから、次世代言語(w)よりもコード出るかと思ったら、出ないのな。 どうでもいいけど
「w」という名前の言語があるのかと思った。割と本気で調べてしまったw 病気の話を持ち出すのは、そういう体験が豊富にあるからだろう >>825
人物と診療科を等値比較とかおまえstd::logic_errorだな Cでfloat型が表す最小の正の数値を求めるプログラム書いてて、
とりあえず1.175494e-38に近づけるように書いてみてるんだが
printfで値表示させながらやってみると1.175494e-38以下も表示されるのなんで?
環境はgcc5.5.0_1
とりあえず最小判定は初期値1.2e-38を0.000001e-38ずつ減らしていって、
1.175494e-38を抜けるとバカな数字が出てくると仮定してif(a / (b - c) != 1)で判定してる
int main(){
float a = 1.2e-38, b;
float c = 0.000001e-38;
while(1){
b = a;
a -= c;
printf("a=%.6e b=%.6e\n", a, b);
if(a < 0 || b < 0) break;
if((a / (b - c) != 1.0)) break;
}
printf("a=%.8e b=%.8e\n", a, b);
if(b < 1.175494e-38) printf("b is not min value\n");
} >>827
精神科医のタイポの指摘しかできなくて悔しいね w >>829
あ、おまえ間違えたの? アホとヴァカしかやらない間違いだなw >>828
なんかいろいろ勘違いしてないか
>1.175494e-38を抜けるとバカな数字が出てくると仮定して
この仮定がはずれてるから無限ループしてんじゃん >>833
int型だとオーバーフローすると馬鹿な数字がでてくるからそう仮定したんだが違うのか
率直に聞くんだけど、この場合どうすればいいの? >>834
バカな数字とかいい加減な理解をしないで、ちゃんとした仕様を調べてみなよ。例えばwikipedia辺りで算術オーバーフローの項目見て全部読んで、分からない語とか関連する語もちゃんと調べるとか。 >>833
>>835
無限ループはしないけどどんどん値は減っていく。
理由わかるの?828じゃないけど俺も知りたい。 ■ このスレッドは過去ログ倉庫に格納されています