当我们在 c 中有更简单的代码时,为什么要使用 malloc 或 calloc?

Bad_Coder
#include <stdio.h>

int main() {
    int n = 0, i;
    printf("Enter the size of array\n");
    scanf("%d", &n);
    int a[n];
    for (i = 0; i < n; i++) {
        a[i] = i + 1;
        printf("%d,", a[i]);
    }
}

我可以知道malloc()calloc()和这段代码之间的区别,因为我猜两者都满足了需求?

苏拉夫·戈什

请注意,根据最新标准,VLA 不是规范的强制性部分。分配器函数(malloc()和系列)是分配内存的标准方式,其大小仅在运行时已知。

引用C18,第 6.7.6.2/P4 章

[...](可变长度数组是实现不需要支持的条件特性;参见 6.10.8.3。)

也就是说,由于 VLA 的性质,在 VLA 的情况下还有其他使用限制,它们的生命周期在定义的范围内受到限制。例如,您不能从函数调用返回在函数中定义的 VLA,但如果您使用分配器函数,则可以返回指针,因为它的生命周期一直保持到以编程方式释放(调用free())。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我们在 C 中创建链表时不使用 malloc() 插入的 calloc() ?

来自分类Dev

在 C 中使用指针时,我们何时以及为什么需要使用 malloc?

来自分类Dev

何时在 C 中使用 calloc 或 malloc

来自分类Dev

为什么我们使用强制转换通过C中的malloc分配堆内存?

来自分类Dev

为什么malloc + memset比calloc慢?

来自分类Dev

指针数组在Objective-C中返回了我的Malloc / Calloc

来自分类Dev

当我们在C ++中声明头文件时,为什么不将空格视为空白?

来自分类Dev

当我们将指针打印到字符类型时,为什么C ++显示字符?

来自分类Dev

我们何时以及为什么必须使用 malloc?

来自分类Dev

C ++编程,使用malloc和calloc无法正常运行动态内存

来自分类Dev

当我们有函数和 lambdas 时,C++ 中的“块”是什么?

来自分类Dev

malloc、realloc、calloc是什么意思?我想知道这些函数的全名

来自分类Dev

当我们覆盖 C 中的联合字段时发生了什么?

来自分类Dev

当我们没有将 Operator+ 定义为朋友时?C++

来自分类Dev

当我们在 C++ 中使用“while”时会发生什么转换?

来自分类Dev

当我们混合使用opencv和dlib时,cv :: imread()在c ++项目中失败

来自分类Dev

当我们在C#中使用JOIN和GROUP BY查询时如何填充datagridview

来自分类Dev

C-Calloc而不是Malloc来节省行?

来自分类Dev

关于C中的malloc和calloc函数的困惑

来自分类Dev

检查malloc / calloc的分配

来自分类Dev

当我们在C ++中更改字符串的值时会发生什么

来自分类Dev

当我们在C中声明静态向量时,是否存储了指向该向量的指针?

来自分类Dev

我应该在C中2D数组的malloc和calloc之后检查NULL指针吗?

来自分类Dev

当我们有IDistributedCache时,为什么要使用IMemoryCache?

来自分类Dev

使用malloc和calloc创建2D数组

来自分类Dev

用零初始化malloc而不是使用calloc

来自分类Dev

当我们在C ++中没有合适的左值时,应该以int&返回什么?

来自分类Dev

关于内存分配,C malloc/calloc 依赖于 Linux mmap/malloc 还是相反?

来自分类Dev

当我们调用(char *)malloc(sizeof(char))为字符串分配内存时,它是否已初始化?如何初始化?

Related 相关文章

  1. 1

    为什么我们在 C 中创建链表时不使用 malloc() 插入的 calloc() ?

  2. 2

    在 C 中使用指针时,我们何时以及为什么需要使用 malloc?

  3. 3

    何时在 C 中使用 calloc 或 malloc

  4. 4

    为什么我们使用强制转换通过C中的malloc分配堆内存?

  5. 5

    为什么malloc + memset比calloc慢?

  6. 6

    指针数组在Objective-C中返回了我的Malloc / Calloc

  7. 7

    当我们在C ++中声明头文件时,为什么不将空格视为空白?

  8. 8

    当我们将指针打印到字符类型时,为什么C ++显示字符?

  9. 9

    我们何时以及为什么必须使用 malloc?

  10. 10

    C ++编程,使用malloc和calloc无法正常运行动态内存

  11. 11

    当我们有函数和 lambdas 时,C++ 中的“块”是什么?

  12. 12

    malloc、realloc、calloc是什么意思?我想知道这些函数的全名

  13. 13

    当我们覆盖 C 中的联合字段时发生了什么?

  14. 14

    当我们没有将 Operator+ 定义为朋友时?C++

  15. 15

    当我们在 C++ 中使用“while”时会发生什么转换?

  16. 16

    当我们混合使用opencv和dlib时,cv :: imread()在c ++项目中失败

  17. 17

    当我们在C#中使用JOIN和GROUP BY查询时如何填充datagridview

  18. 18

    C-Calloc而不是Malloc来节省行?

  19. 19

    关于C中的malloc和calloc函数的困惑

  20. 20

    检查malloc / calloc的分配

  21. 21

    当我们在C ++中更改字符串的值时会发生什么

  22. 22

    当我们在C中声明静态向量时,是否存储了指向该向量的指针?

  23. 23

    我应该在C中2D数组的malloc和calloc之后检查NULL指针吗?

  24. 24

    当我们有IDistributedCache时,为什么要使用IMemoryCache?

  25. 25

    使用malloc和calloc创建2D数组

  26. 26

    用零初始化malloc而不是使用calloc

  27. 27

    当我们在C ++中没有合适的左值时,应该以int&返回什么?

  28. 28

    关于内存分配,C malloc/calloc 依赖于 Linux mmap/malloc 还是相反?

  29. 29

    当我们调用(char *)malloc(sizeof(char))为字符串分配内存时,它是否已初始化?如何初始化?

热门标签

归档