关于为什么要在链表中用malloc来分配内存
不知道有没有人和我一样,在学习链表的时候心里搞不懂为什么要用malloc来分配内存,细细想了想,是因为知道用int也可以分配内存,总觉得可以用什么可以替代malloc来进行内存分配,想了想,突然就明白了了。
- 基础数据类型可分配内存,比如
int a = 0 ;
这就是分配了一块内存,同时为这块内存起了个暂时的名字(为什么是暂时呢?因为在内存释放后,这个内存空间又可以重新分配给别的变量),并存入了一个“0”(当然,在内存块中是一串二进制数)。 - 引用数据类型(自定义的对象等)为啥叫引用呢?比如就是给变量 a 所在内存赋予另外一个别名 b ,可以这么理解。引用数据类型可以像基础数据类型那样直接
类型+变量名
就分配内存了吗?当然不可以!参考基本数据类型定义的实现我们可以知道,分配内存需要知道该分配多大的空间,int 占4个字节我们已经很清楚了,但是直接给出一个对象我们是不知道需要的内存大小的,所以,在为引用数据类型分配内存时,我们需要使用malloc ,realloc《reallloc的使用》等函数来分配空间(其中可以自定义选择空间大小)。
下面是 malloc() 函数的声明。
void *malloc(size_t size)//size -- 内存块的大小,以字节为单位。
该函数返回一个指针 ,指向已分配大小的内存。如果请求失败,则返回 NULL。
!!!这不就能完全理解单链表的这段代码了吗
LNode* newNode = (LNode*)malloc(sizeof(LNode));
- 为什么要强制转换呢?因为指针也是有数据类型的,错误的数据类型可能在访问数据元素时会出现问题。
以上是今天学习时的一些想法,欢迎指正。