为什么要在结构中使用malloc?

大卫·普伦

当没有如下所示的malloc可以完成相同的工作时,为什么还要使用malloc。

#include <stdio.h>
#include <conio.h>

struct node {
    int data;
    struct node *l;
    struct node *r;
};

int main(){
    //Case 1
    struct node n1;
    n1.data = 99;
    printf("n1 data is %d\n", n1.data);

    //Case 2
    struct node *n2 = (struct node *) malloc (sizeof(struct node));
    n2 -> data = 4444;
    printf("n2 data is:%d\n",n2 -> data);
    free(n2);

    return (0);
}
  1. 我很难理解未初始化为内存位置的n1如何存储数据(99)。
  2. 何时使用案例1和何时使用案例2。
巴拉特·拉维库玛(Barath ravikumar)

如果不通过malloc完成相同的工作,为什么我会使用malloc,如下所示。

您使用malloc在堆上分配内存,而没有malloc,则将struct放在堆栈内存中。

我很难理解未初始化为内存位置的n1如何存储数据(99)。

无论是否初始化,在分配数据n1.data = 99;时都会存储它。

2)何时使用案例1和何时使用案例2

当您知道将在有限范围内使用结构对象,并且不会引用超出其范围的结构数据时,将使用情况1。

当您要在多个地方使用结构并且愿意手动(并小心!)管理内存时,将使用情况2。这种方法的优点是,您可以在程序作用域的某个部分创建和初始化结构,然后创建一个指针并传递该指针,因为传递一个4字节的指针比传递结构本身要高效得多。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么要在结构中使用malloc?

来自分类Dev

为什么要在分层ViewController结构中使用NSFetchedResultsController?

来自分类Dev

为什么要在golang中使用组合?

来自分类Dev

为什么要在MVC中使用LabelFor?

来自分类Dev

为什么要在Flux中使用“动作”?

来自分类Dev

为什么要在FRP中使用行为

来自分类Dev

为什么要在laravel中使用npm?

来自分类Dev

为什么要在函数中使用参数?

来自分类Dev

为什么要在延迟中使用setTimeout

来自分类Dev

为什么要在ListView中使用DataTemplate?

来自分类Dev

为什么在malloc中使用sizeof?

来自分类Dev

什么是背景?为什么要在odoo中使用?

来自分类Dev

为什么要在RoR或Sinatra中使用迁移?

来自分类Dev

为什么要在“ if”语句中使用语句?

来自分类Dev

为什么要在Dropwizard指标中使用CachedGauage?

来自分类Dev

为什么要在Google Maps Javascript中使用defer?

来自分类Dev

为什么要在Java卡程序中使用“ setSeed()”?

来自分类Dev

为什么我要在Dockerfile中使用VOLUME?

来自分类Dev

为什么要在C / C ++中使用指针数组?

来自分类Dev

为什么要在流中使用Close over Dispose?

来自分类Dev

为什么要在Java中使用`transient`关键字?

来自分类Dev

为什么要在线程中使用弯针

来自分类Dev

为什么要在VBA或Excel中使用DIM语句?

来自分类Dev

为什么我要在公共方法中使用代码合同?

来自分类Dev

为什么要在Where子句中使用Case

来自分类Dev

为什么我要在Ruby on Rails中使用Angular?

来自分类Dev

为什么要在构造函数中使用对const的引用?

来自分类Dev

为什么要在JavaScript中使用函数作用域?

来自分类Dev

为什么要在类中使用成员变量

Related 相关文章

热门标签

归档