当我定义一个局部变量int a,在内存中是怎么样开辟的,随机的还是操作系统有他开辟的规则?如果我用new 动态开辟一个空间,书上说是在堆栈中开辟的,堆栈是一个专门的内存区域吗?用int a这样会不会出现内存分配重叠的问题,我用VC编程序就碰到过这样的问题,在一个类中定义了十个变量,刚开始运行没问题,可当我再加一个变量运行就出现一个内存地址出现错误的对话框,随便加一个变量也是,再另外一台机子上也是这样的问题.请问这个问题是怎么回事?
非常感谢三楼和四楼的详解,还有个问题,就是如果我用new或malloc来动态分配的空间,如果我在程序中没有delete或free释放,当我退出程序时那些被分配的内存空间是不是还是占用了?我做过一个例子,当我用
int *pint;
for(int i=0;i<100000;i++)
pint=new int;
没释放内存的语句,运行程序的时候内存是直线上升,当在运行一段时间后我直接关闭了程序,而我看任务管理器的内存也是一下就降下来了,那这说明是不是用new分配的空间当程序关系时内存自动释放的?前后有矛盾了..不明白..
使用C语言分配堆内存,需要使用stdlib.h提供的malloc函数。
函数原型:
参数:
num_bytes:要分配的空间大小,单位为字节。
返回值:
分配成功则返回指向该内存的指针,分配失败则返回NULL。
注意:使用malloc分配的堆内存,系统不会自动回收,因此,程序使用完之后,应该调用free函数释放这块内存。
本回答被网友采纳