我在一个我正在使用的库中有这段代码,我想知道它是做什么的,因为我遇到了内存问题,我想这就是原因.
所以这段代码如下:
int new_size = foo->a_size + 10;
foo->a = realloc(foo->a, new_size*sizeof(struct items));
memset(foo->a+foo->a_size, 0, 10);
Run Code Online (Sandbox Code Playgroud)
foo->a是类型struct items*,foo->a_size是类型int.
第一线的重新分配新的内存有10个街区,但现在我想知道,如果memset()设置都foo->a和foo->a_size0或应该从11-20到0这一组块foo->a?我试图自己运行此代码块并仅接收Segmentation fault
编辑:
问题是,memset()设置是foo->a和foo->a_size0还是设置块从偏移foo->a_size到0in foo->a.后一个假设是正确的,但我还需要修复,memset()所以最后一个参数是10 * sizeof(struct items).我也是从编辑变量名foo->b来foo->a_size.
我一直在写代码,现在我应该有另一个程序调用我的库。我应该为我的图书馆的输出制作一个参考计数器。我所理解的基本思想是,我需要在我想要传递的结构中包含引用计数器结构。所以我的问题如下:
制作参考计数器时应注意什么?
制作参考计数器时有哪些完整的禁忌?
真的有详细的例子从哪里开始吗?
提前感谢您的回答!