阁龙1427 发表于 2016-3-17 11:13:28

关于数组和malloc

最近比较困惑一个问题就是我们申请一个数组时,是否需要申请一个空间给他呢?

比如:

#define maxsize100;

int array;

array = (int*)malloc(maxsize);// 这句是否是必要的?

川本姨夫 发表于 2016-3-17 13:02:31

int array; 就已经在栈上分配空间了,malloc是在堆上分配,栈上的是自由变量,函数返回就销毁了,堆上的变量要手动释放

阁龙1427 发表于 2016-3-17 13:49:25

川本姨夫 发表于 2016-3-17 13:02
int array; 就已经在栈上分配空间了,malloc是在堆上分配,栈上的是自由变量,函数返回就销毁了, ...

一般来讲栈自由度小一些,还是想自己分配空间。栈没法控制

阁龙1427 发表于 2016-3-17 14:46:01

川本姨夫 发表于 2016-3-17 13:02
int array; 就已经在栈上分配空间了,malloc是在堆上分配,栈上的是自由变量,函数返回就销毁了, ...

一般来讲栈自由度小一些,还是想自己分配空间。栈没法控制

求道于盲 发表于 2016-9-25 03:31:10

array = (int*)malloc(maxsize);// 这句是否是必要的?

不用讨论是否必要
因为 array不能写在赋值符号左边
这是一个Error
编译器根本不接受

阁龙1427 发表于 2016-9-26 09:30:58

求道于盲 发表于 2016-9-25 03:31
array = (int*)malloc(maxsize);// 这句是否是必要的?

不用讨论是否必要


malloc 分配的是堆。局部变量用的是栈

你是想表达这个意思吧

求道于盲 发表于 2016-9-26 11:32:00

阁龙1427 发表于 2016-9-26 09:30
malloc 分配的是堆。局部变量用的是栈

你是想表达这个意思吧


array是数组
数组不能用 赋值运算符= 进行赋值

lili200238 发表于 2016-9-26 13:12:29

静态数组,编译时,指定大小,分配在栈中。动态数组可以改变大小,分配堆内存,相对而言,动态数组用于中间量,静态用于长时间需要保持的量

最终的执念 发表于 2017-5-31 12:06:10

创建数组的时候   栈中已经分配 足够的空间了   局部变量存储在栈中

数组是自动释放的   而malloc分配的内存在堆中不自动释放

最终的执念 发表于 2017-5-31 12:07:18

数组准确的说 也是个变量   只不过其存储范围是程序员可以控制的
页: [1]
查看完整版本: 关于数组和malloc