柔性数组内存如何分配

#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次数少,离散的内存碎片少,访问效率高

相关推荐
凌波粒1 分钟前
LeetCode--二叉树层序遍历实战指南
算法·leetcode·职场和发展
洛水水5 分钟前
【力扣100题】48.乘积最大子数组
算法·leetcode·职场和发展
小小de风呀5 分钟前
de风——【从零开始学C++】(七):string类详解
开发语言·c++·算法
YL200404266 分钟前
042将有序数组转换为二叉搜索树
数据结构·算法·leetcode
Dlrb12116 分钟前
C语言-结构体
c语言·数据结构·结构体·内存对齐·结构体大小计算
qq_2965532710 分钟前
矩阵对角线遍历:从暴力到最优的优雅解法
数据结构·线性代数·算法·青少年编程·矩阵·深度优先遍历
洛水水11 分钟前
【力扣100题】50.最长有效括号
算法·leetcode·职场和发展
数智工坊11 分钟前
【BLIP论文阅读】:统一视觉语言理解与生成的自举式预训练范式
论文阅读·人工智能·深度学习·算法·transformer
yyy(十一月限定版)12 分钟前
问题解决策略搜索训练3
算法
吃好睡好便好14 分钟前
在Matlab中绘制圆锥三维曲面图
开发语言·人工智能·学习·算法·matlab·信息可视化