kmalloc

kmalloc(size(结构体)*n)就是申请n个大小为结构体的空间,然后返回一个指向这个空间的首地址的指针。这个指针可以看作是一个数组,它的每个元素都是结构体,所以可以使用索引来访问这个空间的不同部分。例如,如果你有一个指针p,它指向一个由三个struct foo类型的结构体组成的空间,那么你可以用p[0]、p[1]和p[2]来访问这三个结构体。你也可以用p、p+1和p+2来表示这三个结构体的地址。这里有一个简单的例子,你可以在你的电脑上运行它,看看它的输出。

c 复制代码
#include <stdio.h>
#include <stdlib.h>

struct foo {
    int a;
    char b;
};

int main() {
    struct foo *p = (struct foo *)malloc(3 * sizeof(struct foo)); //申请三个struct foo类型的空间
    if (p == NULL) {
        printf("malloc failed\n");
        return -1;
    }
    p[0].a = 10; //给第一个结构体的a赋值为10
    p[0].b = 'A'; //给第一个结构体的b赋值为'A'
    p[1].a = 20; //给第二个结构体的a赋值为20
    p[1].b = 'B'; //给第二个结构体的b赋值为'B'
    p[2].a = 30; //给第三个结构体的a赋值为30
    p[2].b = 'C'; //给第三个结构体的b赋值为'C'
    for (int i = 0; i < 3; i++) {
        printf("p[%d].a = %d, p[%d].b = %c\n", i, p[i].a, i, p[i].b); //打印每个结构体的a和b
        printf("p + %d = %p\n", i, p + i); //打印每个结构体的地址
    }
    free(p); //释放空间
    return 0;
}
相关推荐
徐子元竟然被占了!!5 小时前
Linux-systemctl
linux·数据库·oracle
_w_z_j_8 小时前
Linux----mmap
linux
程序员zgh9 小时前
Linux系统常用命令集合
linux·运维·服务器·c语言·开发语言·c++
Bigan(安)9 小时前
【奶茶Beta专项】【LVGL9.4源码分析】09-core-obj_class对象类系统
linux·c语言·mcu·arm·unix
紫郢剑侠9 小时前
飞秋@Windows +iptux@Linux,打造内网跨平台IM环境
linux·运维·服务器·im·qq
保持低旋律节奏9 小时前
linux——调试
linux·运维·服务器
牛奶咖啡139 小时前
Linux系统故障排查思路实践教程(下)
linux·运维·服务器·su命令切换用户问题解决·文件打开过多问题解决·linux网络故障问题解决·linux故障排查思路
coder4_10 小时前
Linux 数据同步全攻略:NFS 共享、inotify+rsync 与 sersync 实战指南
linux·rsync·文件共享·nfs·数据同步·inotify·实时备份
Lynnxiaowen10 小时前
今天我们继续学习kubernetes内容Helm
linux·学习·容器·kubernetes·云计算
Bigan(安)10 小时前
【奶茶Beta专项】【LVGL9.4源码分析】08-theme主题管理
linux·c语言·mcu·arm·unix