为什么要使用malloc结构?

前端之家收集整理的这篇文章主要介绍了为什么要使用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);
}

>我很难理解未初始化到内存位置的n1如何能够存储数据(99).
>何时使用案例1以及何时使用案例2.

解决方法

Why would I use malloc when same job cane be done by without malloc as
below..

您使用malloc,在堆上分配内存,而没有malloc,您将结构放在堆栈内存中.

I am having hard time to understand how n1 which is not initialized
to memory location is able to store data (99) .

分配数据时是否初始化n1.data = 99;,它被存储.

2) when to use case 1 and when to use case 2

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

如果您将在多个地方使用您的结构,并且您愿意手动(并仔细!)管理内存,则使用案例2.这种方法的优点是,您可以在程序范围的某些部分创建和初始化结构,并创建指针并传递指针,因为传递4字节指针比传递结构本身更有效.

猜你在找的C&C++相关文章