关于数组和malloc
最近比较困惑一个问题就是我们申请一个数组时,是否需要申请一个空间给他呢?比如:
#define maxsize100;
int array;
array = (int*)malloc(maxsize);// 这句是否是必要的? int array; 就已经在栈上分配空间了,malloc是在堆上分配,栈上的是自由变量,函数返回就销毁了,堆上的变量要手动释放 川本姨夫 发表于 2016-3-17 13:02
int array; 就已经在栈上分配空间了,malloc是在堆上分配,栈上的是自由变量,函数返回就销毁了, ...
一般来讲栈自由度小一些,还是想自己分配空间。栈没法控制 川本姨夫 发表于 2016-3-17 13:02
int array; 就已经在栈上分配空间了,malloc是在堆上分配,栈上的是自由变量,函数返回就销毁了, ...
一般来讲栈自由度小一些,还是想自己分配空间。栈没法控制 array = (int*)malloc(maxsize);// 这句是否是必要的?
不用讨论是否必要
因为 array不能写在赋值符号左边
这是一个Error
编译器根本不接受 求道于盲 发表于 2016-9-25 03:31
array = (int*)malloc(maxsize);// 这句是否是必要的?
不用讨论是否必要
malloc 分配的是堆。局部变量用的是栈
你是想表达这个意思吧 阁龙1427 发表于 2016-9-26 09:30
malloc 分配的是堆。局部变量用的是栈
你是想表达这个意思吧
不
array是数组
数组不能用 赋值运算符= 进行赋值 静态数组,编译时,指定大小,分配在栈中。动态数组可以改变大小,分配堆内存,相对而言,动态数组用于中间量,静态用于长时间需要保持的量 创建数组的时候 栈中已经分配 足够的空间了 局部变量存储在栈中
数组是自动释放的 而malloc分配的内存在堆中不自动释放 数组准确的说 也是个变量 只不过其存储范围是程序员可以控制的
页:
[1]