用C语言分配开辟内存问题
当我定义一个局部变量inta,在内存中是怎么样开辟的,随机的还是操作系统有他开辟的规则?如果我用new动态开辟一个空间,书上说是在堆栈中开辟的,堆栈是一个专门的内存区域吗...
当我定义一个局部变量int a,在内存中是怎么样开辟的,随机的还是操作系统有他开辟的规则?如果我用new 动态开辟一个空间,书上说是在堆栈中开辟的,堆栈是一个专门的内存区域吗?用int a这样会不会出现内存分配重叠的问题,我用VC编程序就碰到过这样的问题,在一个类中定义了十个变量,刚开始运行没问题,可当我再加一个变量运行就出现一个内存地址出现错误的对话框,随便加一个变量也是,再另外一台机子上也是这样的问题.请问这个问题是怎么回事?
非常感谢三楼和四楼的详解,还有个问题,就是如果我用new或malloc来动态分配的空间,如果我在程序中没有delete或free释放,当我退出程序时那些被分配的内存空间是不是还是占用了?我做过一个例子,当我用
int *pint;
for(int i=0;i<100000;i++)
pint=new int;
没释放内存的语句,运行程序的时候内存是直线上升,当在运行一段时间后我直接关闭了程序,而我看任务管理器的内存也是一下就降下来了,那这说明是不是用new分配的空间当程序关系时内存自动释放的?前后有矛盾了..不明白.. 展开
非常感谢三楼和四楼的详解,还有个问题,就是如果我用new或malloc来动态分配的空间,如果我在程序中没有delete或free释放,当我退出程序时那些被分配的内存空间是不是还是占用了?我做过一个例子,当我用
int *pint;
for(int i=0;i<100000;i++)
pint=new int;
没释放内存的语句,运行程序的时候内存是直线上升,当在运行一段时间后我直接关闭了程序,而我看任务管理器的内存也是一下就降下来了,那这说明是不是用new分配的空间当程序关系时内存自动释放的?前后有矛盾了..不明白.. 展开
6个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询