操作系统内存管理,段错误?

时间:2018-11-09 01:14:23

标签: c memory-management operating-system

我正在实现自己的名为_unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); 的{​​{1}}函数。

但是我遇到了细分错误。我已将内存大小设置为100。 malloc现在开始,但是分段错误发生在kalloc的第3个循环中。

int _size = 4

请帮助我找出为什么main()发生的原因。

1 个答案:

答案 0 :(得分:0)

请尝试gdb跟踪发生段错误的位置。假设您使用的是Linux / unix,请使用选项编译代码(如果编译器是gcc)

gcc -ggdb -g3 <.c file> -o <progname>

使用gdb执行程序名

gdb <progname>

在gdb提示符下

gdb> run

在segfault上,gdb提示将显示您将回溯检查为的位置

gdb> bt

它将显示发生段错误的行号以及函数调用堆栈(带编号的帧) 对于要检查的变量或指针的值,请使用gdb打印命令

gdb> p <varnams>

要检查调用堆栈中的特定功能,请转到该堆栈框架,

gdb> frame <frame number>