株式会社Ninjastars取締役の齊藤です。 皆様もC言語やC++で開発しているときなどに一度はこの実行時エラーを見たことがあるのではないでしょうか? 今回はSegmentation Fault(以下セグフォ)がどのようにして発生するのかを詳細に書いていこうと思います。 1.セグフォとは 割り当てられた仮想メモリ領域(セグメント)に読み込み(r)または書き込み(w)、実行の権限(x)がない状態でアクセスしたときに起こるエラーのことを指します。 では、なぜセグフォが必要なのでしょうか? それはメモリに展開されているプロセスを保護し、OS全体に影響を及ぼさないためです。 2.セグフォの原因を探す手順 プログラムを用意したのでそれを例に原因を探していきましょう。 まず今回のプログラムは標準入力で10byteのbufferに文字データを格納するものです。 標準入力する際、gets関数を使っている
はじめに これは何か / 何がいいのか clang-formatは、主にC++を対象としたソースコード整形ツール(code formatter)である。 ソースコード整形ツールは、ソースコードのフォーマット: コーディングスタイルのうちの見た目に関するものを、一定のルールに従って整形するツールである。ソースコード整形ツールを使うことで、例えばインデントの行い方やカッコの付け方などを手間をかけずに統一できる。チームで開発する際などに、全ソースコードのフォーマットをツールに任せて統一できると、フォーマットに対する好みの差によるソースコードの差分が発生しないため開発効率がよい。 C++用ソースコード整形ツールとして、2022年9月現在で名前がよく知られているのはclang-formatぐらいの様子。 clang-formatでは、整形の行い方をルールファイルで指定する。用意されているスタイル(G
C言語のマクロの引数の最後に ... を指定することで任意個の引数を取り、 __VA_ARGS__ で参照できる:
C/C++プログラム実行時の関数をトレースする方法を紹介します。 1.はじめに C/C++プログラムで実行時の関数をトレースする場合、printf()などを埋め込んでログに出力することが少なくないと思います。 が、その方法ではログ出力するためにプログラムに手を入れなくてはならなず、非効率です。 また規模の大きなプログラムでは現実的な解決方法ではありません。 printf()を埋め込まずにトレースできないか、方法を探していたところ、標準でそのような機能があることをみつけました。 仕組みは、gccでトレースしたいプログラムファイルのコンパイル時に、コンパイルオプション"-finstrument-functions"を付与することで、関数の実行開始時および復帰時に下記のフック関数を呼び出せるようになります。 void __cyg_profile_func_enter(void* func, vo
Introduction Many implementations provide extensions that allow programmers to attach a block of cleanup code to another block or function such that this cleanup code is executed unconditionally when execution of the block is terminated. These existing extensions don’t have a unified API, some use pseudo-function calls, some compiler specific attributes and yet another a try/finally notion. In a f
bashなどの shell では "~/*" "$HOME/*" はホームディレクトリ以下のファイル名に展開されます. これをC/C++で実装する方法です 実装 wordexp(3) を使います #include <wordexp.h> #include <stdio.h> int main(int argc, char *argv[]) { wordexp_t exp; int flags = 0; int ret; ret = wordexp("~/*", &exp, flags); if (0 == ret){ int i; for (i=0; i<exp.we_wordc; i++){ printf("%s\n", exp.we_wordv[i]); } } wordfree(&exp); return 0; } なお wordexp は POSIX.1‐2001, POSIX.1
Section: Linux Programmer's Manual (3) Updated: 2017-09-15 Index JM Home Page roff page 名前 mkstemp, mkostemp, mkstemps, mkostemps - 他と重ならない名前を持つ一時ファイルを作成する 書式 #include <stdlib.h> int mkstemp(char *template); int mkostemp(char *template, int flags); int mkstemps(char *template, int suffixlen); int mkostemps(char *template, int suffixlen, int flags); glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く