我读老的glibc的文档在这里时,我看到了,我以前从来没有(r_alloc,r_alloc_free和r_re_alloc)看到三个怪功能.他们实现了一个分配器,它可以为碎片整理目的重新分配内存,我想,但我无法在其他任何地方找到更多信息.
你能告诉我更多关于这些功能的信息吗?他们还在格里布吗?如果没有,为什么他们被删除?
我正在试验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)