小编Mab*_*bus的帖子

重定位分配器发生了什么?

我读老的glibc的文档在这里时,我看到了,我以前从来没有(r_alloc,r_alloc_free和r_re_alloc)看到三个怪功能.他们实现了一个分配器,它可以为碎片整理目的重新分配内存,我想,但我无法在其他任何地方找到更多信息.

你能告诉我更多关于这些功能的信息吗?他们还在格里布吗?如果没有,为什么他们被删除?

c gnu glibc

10
推荐指数
1
解决办法
124
查看次数

没有malloc的完整封装

我正在试验C11和VLA,试图在堆栈上声明一个只有不完整声明的结构变量.目标是提供一种机制来创建一些结构类型的变量而不显示内部(如PIMPL惯用法),但不需要在堆上创建变量并返回指向它的指针.此外,如果结构布局发生更改,我不想重新编译使用该结构的每个文件.

我设法编写了以下内容:

private.h:

#ifndef PRIVATE_H_
#define PRIVATE_H_

typedef struct A{
    int value;
}A;

#endif /* PRIVATE_H_ */
Run Code Online (Sandbox Code Playgroud)

public.h:

#ifndef PUBLIC_H_
#define PUBLIC_H_

typedef struct A A;

size_t A_getSizeOf(void);

void A_setValue(A * a, int value);

void A_printValue(A * a);

#endif /* PUBLIC_H_ */
Run Code Online (Sandbox Code Playgroud)

implementation.c:

#include "private.h"
#include "stdio.h"

size_t A_getSizeOf(void)
{
    return sizeof(A);
}

void A_setValue(A * a, int value)
{
    a->value = value;
}

void A_printValue(A * a)
{
    printf("%d\n", a->value);
}
Run Code Online (Sandbox Code Playgroud)

main.c中:

#include <stdalign.h>
#include <stddef.h>

#include "public.h"

#define …
Run Code Online (Sandbox Code Playgroud)

c pimpl-idiom c99 variable-length-array c11

7
推荐指数
1
解决办法
763
查看次数

标签 统计

c ×2

c11 ×1

c99 ×1

glibc ×1

gnu ×1

pimpl-idiom ×1

variable-length-array ×1