-1
メイン関数で動作するコードがいくつかありますが、関数内で移動するとセグメンテーションフォルトでクラッシュしますか?違いは何ですか?同じコードはmain()では動作しますが、他の関数では機能しません
この作品:
#include <sys/capability.h>
#include <sys/types.h>
int
main() {
cap_t caps;
caps = cap_get_proc();
cap_flag_value_t * val;
cap_get_flag(caps, CAP_FOWNER, CAP_EFFECTIVE, val);
cap_free(caps);
return 0;
}
これは動作しません:
#include <sys/capability.h>
#include <sys/types.h>
void
my_get_cap() {
cap_t caps;
caps = cap_get_proc();
cap_flag_value_t * val;
cap_get_flag(caps, CAP_FOWNER, CAP_EFFECTIVE, val);
cap_free(caps);
}
int
main() {
my_get_cap();
return 0;
}
常に 'gcc -Wall -Werror'を使用してください。初期化されていない 'val'を' get_get_flag() 'に渡すのを止めます。 –
あなたの問題はまったく問題にはなりませんが、関数の空のパラメーターリストは、前世紀の80年代後半から時代遅れです。 – Gerhardh