柔性数组内存如何分配

#define _CRT_SECURE_NO_WARNINGS 1

struct S

{

int n;

int arr[0];//柔性数组,前面至少有一个其他成员

};

main()

{

//sizeof返回的这种结构大小不包括柔性数组的内存

printf("%d\n", sizeof(struct S));
//包含柔性数组成员的结构用malloc()函数进行内存的动态分配,
//并且分配的内存应该大于结构体的大小,以适应柔性数组的预期大小

struct S* ps = (struct S*)malloc(sizeof(struct S) + 40);

ps->n = 100;

return 0;

}

优点:malloc次数少,离散的内存碎片少,访问效率高

相关推荐
GEEK零零七26 分钟前
Leetcode 1472. 设计浏览器历史记录
算法·leetcode
啵一杯44 分钟前
leetcode1801. 积压订单中的订单总数
数据结构·算法
pranaa1 小时前
数据结构:树的定义及其性质
数据结构·数据库·算法
The丶Closer1 小时前
10. 排序
java·数据结构·算法·排序算法
liuyang-neu2 小时前
力扣 简单 104.二叉树的最大深度
java·数据结构·算法·leetcode
simple_ssn2 小时前
【C语言刷力扣】2079.给植物浇水
c语言·算法·leetcode
是小恐龙啊2 小时前
单链表的增删改查(数据结构)
c语言·开发语言·数据结构·算法
什码情况2 小时前
报数游戏 - 华为OD统一考试(E卷)
java·python·算法·游戏·华为od·笔试·华为od机试
Gabriel Drop Out3 小时前
17年数据结构考研真题解析
数据结构·考研
WenGyyyL3 小时前
准备蓝桥杯和ACM:C++标准库头文件及其常用功能简介
开发语言·c++·算法·蓝桥杯·acm