当前位置:编程学习 > C/C++ >>

c/c++分配内存问题

为什么c++和c中为什么要用内存分配malloc和new去分配,我不用这两个函数一样可以分配。用和不用有什么区别吗?

补充:我说的分配是只要将指针初始化一下就可以了。

追问:还有一个问题,就是我用malloc分配一个空间给double *p,我分配5个地址,为什么我测得大小还是为8?如果改变它的值。
答案:
我知道你的意思,内存的分配可以分为,静态和动态,静态的就是指,你的程序你编译的时候能够确定的内存,比如你申请了个int n;那么在c语言的程序编译的时候他会自动的为n分配两个字节的内存,但是有些时候我们是不知道有多少个数据需要存储的,比如一个学生管理系统,在程序编译的时候并不能确定你有多少个学生的信息可以存储,也就没有办法分配,所以必须有动态分配内存的机制,在每次输入学生信息的时候才开始分配内存,这就是malloc的用处

你不用这两个函数如何分配?

这两个函数是基于内存管理之上的,即内存管理模块将你用的这片内存标注为已用,在你释放之前,其他人就用不了了

你没理解对指针初始化,表明上没有调用任何内存分配函数,但是编译器在编译的时候已经为你做了这些了,
malloc是属于c语言的内存管理方式 的一部分 与之配套的还有 calloc realloc free
new是c++的内存管理方式的一部分 与之配套的还有 delete  new[] delete[]

并不是单纯的内存分配
如果你想在内存管理上操作程序就可以用这东西 
平时写程序可以用这些来熟练一下如何使用他

如果仅仅是使用指针 没必要使用他
如果要管理大量的内存 用指针则不太方便管理

实现动态链表,你怎么分配内存?必须先用New申请一个空间才行

上一个:学习c++的首要前提是什么?
下一个:用C++构造一个学生类。

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,