是否可以在不使用malloc的情况下返回指向结构的指针?

Mar*_*mes 7 c malloc struct pointers

我正在使用GBDK编写Gameboy ROM,它有一个不稳定的malloc版本,我无法工作.我也无法在结构中返回结构.这让我试图返回一个指针,这就是为什么我想知道是否有办法避免在返回结构指针时使用malloc?

我基本上想要做的是我希望能够写出这样的东西:

create_struct(struct_name, char member_x, char member_y);
Run Code Online (Sandbox Code Playgroud)

这是我用malloc编写的代码:

 struct point {
    char member_x;
    char member_y;
};


struct point *makepoint(char member_x, char member_y) {
    struct point *temp = malloc(sizeof(struct point));

    temp->member_x = member_x;
    temp->member_y = member_y;

    return temp;
};
Run Code Online (Sandbox Code Playgroud)

R..*_*R.. 5

有各种有效的方式返回一个指针(一种结构或任何类型的对象),但要返回一个指针的唯一途径的新对象之前被调用的函数是使用不存在malloc,realloc,calloc,aligned_alloc( C11),或一些实现定义的分配函数(例如mmap在POSIX系统上等).

您可以返回有效指针的其他方法包括:

  1. 指向具有static存储持续时间的对象的指针.只有一个这样的对象的实例存在,所以这通常是一个坏方法.

  2. 作为参数传递给函数的指针,用作存储结果的位置.这通常是一种很好的方法,因为您将获取存储的责任转嫁给调用者.

  3. 指向从某种全局池中获取的对象的指针.对于低端游戏设备,这可能是嵌入式系统和游戏设计中非常好的方法.