×ばつ printfが無いとなぜか動かない ○printfがあるとなぜか動く」、「再現させられる例を狙って出せるのは凄い」、「なんでprintfがあると動くのか気になって夜も6時間くらいしか寝れない」、「オーバーランしてるけどたまたま直後にいた奴を犠牲にして動いているのあるある。」などです。"> ×ばつ printfが無いとなぜか動かない ○printfがあるとなぜか動く" / muuuminsan, "再現させられる例を狙って出せるのは凄い" / k2wanko, "なんでprintfがあると動くのか気になって夜も6時間くらいしか寝れない" / rryu, "オーバーランしてるけどたまたま直後にいた奴を犠牲にして動いているのあるある。"">
[フレーム]
はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

気に入った記事をブックマーク

  • 気に入った記事を保存できます
    保存した記事の一覧は、はてなブックマークで確認・編集ができます
  • 記事を読んだ感想やメモを書き残せます
  • 非公開でブックマークすることもできます
適切な情報に変更

エントリーの編集

loading...

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。

タイトルガイドライン

このページのオーナーなので以下のアクションを実行できます

タイトル、本文などの情報を
再取得することができます
コメントを非表示にできます コメント表示の設定

ブックマークしました

ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください

Twitterで共有

ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します

587users がブックマーク コメント 145

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

「この位置にprintfが無いとなぜか動かないんだ。」 - Qiita

ガイドラインをご確認の上、良識あるコメントにご協力ください

0 / 0
入力したタグを追加

現在プライベートモードです 設定を変更する

おすすめタグタグについて

よく使うタグ

はてなブックマーク

はてなブックマークで
関心をシェアしよう

みんなの興味と感想が集まることで
新しい発見や、深堀りがもっと楽しく

ユーザー登録

アカウントをお持ちの方はログインページ

記事へのコメント145

  • 注目コメント
  • 新着コメント
fukken
×ばつ printfが無いとなぜか動かない しろまるprintfがあるとなぜか動く

その他
muuuminsan
再現させられる例を狙って出せるのは凄い

その他
k2wanko
なんでprintfがあると動くのか気になって夜も6時間くらいしか寝れない

その他
rryu
オーバーランしてるけどたまたま直後にいた奴を犠牲にして動いているのあるある。

その他
theatrical
"/*十分な大きさ*/と白々しいコメントがあるにも関わらず領域が足りておらずバッファオーバーランを起こしている" 最高

その他
ysync
「自分の書いたコードを信じてはいけない。」はい。

その他
tockri
printfで使われなくなると最適化で変数の宣言部が消えてスタック領域が切り詰められてたまたま参照できてた場所が領域外になるのか。読めばなるほどってなるけど、長いコードの中からこういうの見つけるの無理そー。

その他
poponponpon
"おわりに おわりです。 "

その他
PEEE
こういうメモリ領域上たまたま動くやつもあるけど、デバイスドライバとかハードウェアが絡むやつだとprintfの処理でタイミングが変わって動いたりすることがある。デバッグログ入れたら再現しなくなったとかね...

その他
ardarim
偶々動く、なんてことはふつうあり得ないわけで(0とは言わない)、突き詰めれば必ず原因がある。ただこの手の問題は正攻法では原因にたどり着かないのが難しい所以。原因の特定、理解には一段上の知識が必要。

その他
ytRino
大学の課題でC書いてるときに1・2度経験がある😇

その他
tanakh
C++書いてた時よくこういうのに悩まされたなあ。今だと-fsanitizeでいけるんかなって試してみたら、例2のほうはエラーになってくれたけど、例1のほうはaddressでもundefinedでも出なかった。これを拾ってくれないのか...。

その他
versatile
こういうのよくあったなぁ昔

その他
raahii
"自分の書いたコードを信じてはいけない。"

その他
konishika
へー。おもしろい

その他
shiju_kago
原因はわからないけどなぜか入れたら動く部分を『おまじない』って名付けた人秀逸すぎる

その他
mashori
素晴らしき解説。

その他
terazzo
狙って鼻から悪魔を出せる人すごい

その他
bell_chime_ring238
これぞプログラム言語って感じがする(古老感) あまりにもこういう事例が起きすぎるんで、最近の言語やスクリプトでは気にしなくても済むような仕様になってきてるが、それがまた「?」になる人を増やすという...

その他
nyokkori
わぁ、卒業研究で作ったプログラム思い出して来たぞ、、、。

その他
OkadaHiroshi
これらの例とは関係ないけど、昔の処理系でprintfの内容で別なライブラリをリンク(単純なprintfなら機能が限定されたフットプリントの小さい物)するので、そのライブラリの関係で動作したりしなかったりする事があった

その他
nicht-sein
マルチスレッドが絡むと「偶々動く」が頻発するので、人類にはまだマルチスレッドは早すぎる

その他
sharaku3eyes
もしかしたら動かなくなってから誰かがprintf入れてfixした可能性...

その他
t-tanaka
未定義動作はコンパイラが警告出してくれるけど,バッファーオーバーランは,ほんと機械的には防げないから大変。

その他
kiyo_hiko
Cこわ...手を出さんとこ

その他
yamadar
例を出して解説できるの凄い

その他
modoroso
面白い

その他
natu3kan
変数をしっかり定義し、メモリの使う場所や初期化もしっかりしておかないと、初期化されてない前提じゃないと動かないみたいな状況になったりとかはある。

その他
otihateten3510
C言語って、恐いよね

その他
xxix29
たまたま動いている状態にすぎないからこそのおまじない。

その他
NOV1975
こういうのって、コケてくれれば調べられるんだけど、動くと気づきを得るしかなくて辛いデバッグになりがち

その他
havanap
セキュリティ的にもよろしくない

その他
knok
コンパイラのお気持ちを把握されている

その他
bigchu
自分の書いたコードを信じてはいけない。

その他
satomi_hanten
組み込みだと年がら年中よくある話なんだが、結局「ハードの仕様とあってない」か「ハードの仕様が間違ってる」ためタイミングがズレるとかいう話なので別枠すかね。(ROMの初期化が間に合わないとか色々)

その他
z1h4784
最近の言語はこれくらいコンパイラ側で何とかしてくれるから、こういう不具合に当たることは少なくなったな

その他
ginpei
未初期化変数とバッファオーバーランの周囲でprintf()を利用して意図的に「たまたま動く」状態を用意した例。前者は関数呼び出しで未初期化領域が非0で埋まることを期待、後者は壊れても影響のないバッファを配置。

その他
richard_raw
"自分の書いたコードを信じてはいけない。" せやな......。

その他
deep_one
未定義変数を参照できてしまう言語実装が恐ろしい。

その他
otation
C言語の動作は恐ろC

その他

注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

リンクを埋め込む

以下のコードをコピーしてサイトに埋め込むことができます

プレビュー
アプリのスクリーンショット
いまの話題をアプリでチェック!
  • バナー広告なし
  • ミュート機能あり
  • ダークモード搭載
アプリをダウンロード

関連記事

usersに達しました!

さんが1番目にブックマークした記事「「この位置にpr...」が注目されています。

気持ちをシェアしよう

ツイートする

「この位置にprintfが無いとなぜか動かないんだ。」 - Qiita

#include <stdio.h> void fizzbuzz(int n) { int next; int i = 1; do { printf(i % 15 ? i % 5 ? i % 3... #include <stdio.h> void fizzbuzz(int n) { int next; int i = 1; do { printf(i % 15 ? i % 5 ? i % 3 ? "%d\n" : "Fizz\n" : "Buzz\n" : "FizzBuzz\n", i); if (i++ >= n) next = 0; } while (next); } int main(void) { printf((char[]){""}); // この位置にprintfが無いとなぜか動かない fizzbuzz(100); } gcc 10.1.0 を使用し、コンパイラが感知したミスには警告を出力してくれる様 -Wall -Wextra を指定し、最適化指示なしでコンパイル、動作させたところ動作するが Wandboxで実行 main() の中の何も出力していない printf(

ブックマークしたユーザー

  • sc3wp06ga2023年10月19日 sc3wp06ga
  • techtech05212022年10月02日 techtech0521
  • l080842021年06月16日 l08084
  • poppyhi2021年02月07日 poppyhi
  • mickey-strange2021年01月27日 mickey-strange
  • fkshom2020年12月29日 fkshom
  • thotentry_hatebu1972020年12月12日 thotentry_hatebu197
  • mickey-STRANGE2020年12月02日 mickey-STRANGE
  • mhag2020年11月18日 mhag
  • m0t0m0t02020年11月14日 m0t0m0t0
  • rabbit2go2020年11月01日 rabbit2go
  • lugecy2020年11月01日 lugecy
  • alcus2020年10月29日 alcus
  • taro-maru2020年10月29日 taro-maru
  • ytRino2020年10月28日 ytRino
  • mjtai2020年10月23日 mjtai
  • tanakh2020年10月23日 tanakh
  • xef2020年10月21日 xef
すべてのユーザーの
詳細を表示します

ブックマークしたすべてのユーザー

同じサイトの新着

同じサイトの新着をもっと読む

いま人気の記事

いま人気の記事をもっと読む

いま人気の記事 - テクノロジー

いま人気の記事 - テクノロジーをもっと読む

新着記事 - テクノロジー

新着記事 - テクノロジーをもっと読む

同時期にブックマークされた記事

いま人気の記事 - 企業メディア

企業メディアをもっと読む

はてなブックマーク

公式Twitter

はてなのサービス

Copyright © 2005-2025 Hatena. All Rights Reserved.
設定を変更しましたx

AltStyle によって変換されたページ (->オリジナル) /