我怎么能在主函数中运行某些代码,但在函数中移动时会因分段错误而崩溃?有什么区别?
本作品:
#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;
}
答案 0 :(得分:1)
您尚未初始化cap_flag_value_t * val;
- 对cap_get_flag
的调用写入它,然后它可能会/可能不会崩溃,具体取决于写入的内存位置。将这些行更改为:
cap_flag_value_t val;
cap_get_flag(caps, CAP_FOWNER, CAP_EFFECTIVE, &val);