什么时候我应该在C中使用malloc而不是普通的数组定义?
我无法理解之间的区别:
int a[3]={1,2,3}
int array[sizeof(a)/sizeof(int)]
Run Code Online (Sandbox Code Playgroud)
和:
array=(int *)malloc(sizeof(int)*sizeof(a));
Run Code Online (Sandbox Code Playgroud) 好吧,对于业余程序员来说,这个问题可能听起来很愚蠢。但严重的是,这让我感到困扰,欢迎对我的这个疑问做出严肃的回答。我刚刚开始学习我的第一门数据结构课程。而困扰我的是:
假设使用 C,
//Implementing a node
struct Node
{
int data;
struct *Node;
};
Run Code Online (Sandbox Code Playgroud)
现在,在创建节点时,为什么我们在使用 malloc() 的地方使用动态内存分配技术。我们不能只创建一个“结构节点”类型的变量。即类似:
struct Node N1;
//First node - actually second where !st Node is assumed to be Head.
struct Node *Head = &N1;
struct Node N2;
N2.(*Node) = &N1;
Run Code Online (Sandbox Code Playgroud)
好吧,我的代码的某些部分可能不正确,因为我只是一个初学者并且不精通 C。但是知道您可能已经理解我的基本意思。为什么我们不创建 Node 类型的 Node 类型的变量来分配内存 t 新节点为什么要进入动态内存分配的复杂性?
我总是被告知,只要我可以在没有内存的情况下实现完全相同的事情,就不要分配内存。
人们是否这么说是因为释放代码中的内容可能需要一些时间,还是有一个以效率为导向的解释?(例如更好的性能)