`

柔性数组

 
阅读更多
#include <iostream>
#include <malloc.h>
using namespace std;

class A{
public:
    A(){}
public:
    char c;
    char data_arr[];//柔性数组并不占空间,有些编译器也支持arr[0],一般可用于变长结构体中,如在网络编程中需要发送的content长度不确定
};

int main()
{
    cout << "sizeof(A):" << sizeof(A)<<endl;
    int len = 3;
    A *a = (A*)malloc(sizeof(A)+sizeof(char)*len);
    for(int i=0;i<len;i++){
        a->data_arr[i] = i+'0';
    }
    for(int i=0;i<len;i++){
        cout << a->data_arr[i] << endl;
    }
    cout << "sizeof(*a):" << sizeof(*a) << endl;    free(a);
    return 0;
}

sizeof(A):1
0
1
2
sizeof(*a):1
分享到:
评论

相关推荐

    柔性数组成员

    ### 柔性数组成员详解 #### 一、引言 C99标准引入了一种新的特性——**柔性数组成员**(Flexible Array Member, FAM),它为动态数组的处理提供了一个更为优雅且高效的解决方案。在传统的C语言编程中,处理可变...

    用柔性数组方式实现斐波那契数列

    用柔性数组方式实现斐波那契数列,里面运用c语言进行编程,一个c文件,大家相互学习

    C语言变长消息定义:柔性数组

    C语言变长消息定义:柔性数组 C语言中柔性数组是指在结构体中定义一个数组,但是不指定数组的大小,而是根据实际需要动态分配内存空间的数组。这是一种常用的技术,特别是在网络通信和数据存储等领域。 首先,让...

    SoftArray.rar_95O_柔性数组

    柔性数组(Flexible Array Member)是C++中一种特殊的数据结构设计,主要应用于结构体或类的设计,以提高内存效率和程序的灵活性。在C++标准库中,它被广泛用于容器如`std::vector`、`std::string`等内部实现。在本...

    C语言柔性数组实例详解

    C语言的柔性数组是一种特殊的数组,它允许在结构体的末尾定义一个未指定大小的数组,这种特性在处理动态数据存储时非常有用。柔性数组成员的定义使得结构体可以适应不同大小的数据,而不需要预先知道确切的数组长度...

    预防内存操作bug

    以下我们将详细探讨如何通过柔性数组、智能指针以及正确处理数组边界来预防内存操作中的问题。 1. 防止数组越界操作: 数组越界是常见的编程错误,它发生在访问数组时,索引超出数组的实际大小。这可能导致程序崩溃...

    c语言动态内存详细介绍,一定值得.pdf

    5. 柔性数组的概念和使用:柔性数组是一种特定结构中最后一个元素为数组的结构类型,其特点在于数组部分的大小可以不指定,然后根据实际运行时的需要进行动态调整。柔性数组适用于C99标准,常用于需要动态数组的场景...

    数组和指针的艺术,就是艺术!

    第八章“柔性数组成员”是C99标准引入的结构体成员,它允许结构体的最后一个成员是一个未指定大小的数组。这种设计在处理变长数据结构时非常有用,如在实现堆栈或队列等数据结构时。 第九章的“右左法则”是解析...

    gcc编译器优化选项分析

    详细介绍了gcc编译器的优化选项 -O1 -O2 -O3,gcc手册相关部分的翻译

    【C语言/基础梳理/期末复习】动态内存管理思维导图

    - 使用`malloc`进行动态分配时,分配的内存需大于结构体的大小,以容纳柔性数组的预期大小。 - **优势**: - 方便内存释放。 - 有利于提高访问速度。 #### 六、C/C++程序内存区域划分 - **栈区**: 存放函数内部...

    非常好的C语言基础项目资源,分享出来.zip

    c语言基础 . ├── C language │ ├── C语言函数库详解.docx │ ├── C语言深度解剖 ...│ │ │ ├── 5、柔性数组.txt │ │ │ ├── 6、贪心法.txt │ │ │ └── 7、预处理.txt │ │ └── 目录.txt

    关于C语言的基础知识.rar

    │ │ │ ├── 5、柔性数组.txt │ │ │ ├── 6、贪心法.txt │ │ │ └── 7、预处理.txt │ │ └── 目录.txt │ ├── LinuxC冷知识 │ │ ├── close(1)和输出到文件中.txt │ │ ├── dup()和dup

    RIL一款专门为嵌入式平台开发的无线通信模块适用于资源受限物联网终端设备

    模组驱动使用插件化方式管理,同一个...256 Bytes编译器:由于RIL使用了一些C99的特性(柔性数组、内联),所以编译器需要开启对C99的支持。对于IAR,它默认是打开的,而Keil MDK需要手动增加编译选项(--c99 --gnu) 。

    C语言的基础知识学习个人总结集合.zip

    C语言的基础知识学习...│ │ │ ├── 5、柔性数组.txt │ │ │ ├── 6、贪心法.txt │ │ │ └── 7、预处理.txt │ │ └── 目录.txt │ ├── LinuxC冷知识 │ │ ├── close(1)和输出到文件中.txt │

    C99RationaleV5.10_C标准_c99_

    8. **柔性数组成员**:结构体类型可以包含一个未指定大小的数组作为最后一个成员,称为柔性数组成员,这在创建变长数据结构时非常有用。 9. **多行字符串字面量**:C99允许使用`""`连接多个字符串字面量,形成一个...

    详解C语言Struct(结构体)系列之一

    柔性数组成员允许结构体的最后一个元素是一个长度为0的数组,这样做可以灵活地根据需要分配结构体后面的内存空间。 最后,文档提到将会有第二季的内容提供,这表明了结构体系列的深入讲解将陆续推出,为读者提供更...

    C99RationaleV5.10.zip

    5. **柔性数组成员**:结构体中可以包含一个未指定大小的数组作为最后一个成员,这种特性称为柔性数组成员,有助于节省内存并简化动态分配。 6. **嵌套函数**:C99允许在函数内部定义函数,这对于局部状态管理和...

Global site tag (gtag.js) - Google Analytics