99问答网
所有问题
C++中,new申请内存问题?
如题所述
举报该问题
推荐答案 2020-02-29
这样是会有内存泄漏的,因为第一次执行s
=
new
stu;
后,系统申请了一块新的内存空间(类型为stu),并把其地址赋给s
第2此执行s
=
new
stu后,系统又申请了一块新的内存空间,并把其地址赋给s,此时把s原来的值覆盖掉了,也就是第一次申请的内存空间的地址丢失了
而delete
s;
只是把现在s指向的内存中的变量删除,这就把第二次申请的变量删除了,但是这样并不能将第一次申请的变量删除,因为其地址已经丢失掉了
就算你执行两次delete语句也是没有用的,这样就算编译器不报错,执行程序的时候都会报错,因为你删除了同一个地址两次
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/zXB7BtjBzeeevB7Bve.html
其他回答
第1个回答 2020-05-01
int*
a代表的是定义一个指针,这个指针指向的是一个int类型,
使用new的时候是表示在堆上开辟内存空间,
你第一个中new
int[10]
这里的10代表个数,这里表示,开辟一个可以容纳10个int的内存空间,
而下面这个只开辟一个,
这里你使用的是指针的方式访问数据,即使是上面中你可只能
*a=1;
*(a+1)=2;
你说这种情况一般编译器不会提示但是由于访问一个未知的内存就可能造成不确定的后果
第2个回答 2020-04-11
首先说明的是,a
不是数组,是一个指针。
int
*a=new
int[10];
是用new开辟一个10个int的数组的内存,把头指针赋值给a,所以a可以访问这些数组的数据,int
*a=new
int;
开辟一个int的内存空间,
至于引用a[100]当然可以,因为a是内存地址的指针,它一般能移动100次,但是它指的地方一般没初始化,所以可能会出现乱码,但是不会报错。
相似回答
C++中,new申请内存问题?
答:
这样是会有
内存
泄漏的,因为第一次执行s =
new
stu;后,系统
申请
了一块新的内存空间(类型为stu),并把其地址赋给s 第2此执行s = new stu后,系统又申请了一块新的内存空间,并把其地址赋给s,此时把s原来的值覆盖掉了,也就是第一次申请的内存空间的地址丢失了 而delete s;只是把现在s指...
C++
new申请内存,
提示 内存不足
答:
可能是你的内存不够用了,还有就是你申请的太多,系统无法分配这么的内存给你
。比如 : new int[10000],这你就需要10000*4字节,但是你的系统无法分配这么多给你使用,电脑cpu不光是给你正在使用的程序占分配资源,还有很多系统进程也需要。因此你不需要分配太大的空间。还有就是new出来的空间是在堆里...
C++
new申请内存,
提示 内存不足
答:
可能是你的内存不够用了,还有就是你申请的太多,系统无法分配这么的内存给你
。比如 : new int[10000],这你就需要10000*4字节,但是你的系统无法分配这么多给你使用,电脑cpu不光是给你正在使用的程序占分配资源,还有很多系统进程也需要。因此你不需要分配太大的空间。还有就是new出来的空间是在堆里...
在
C++中,
用
new申请
了指针指向某
内存
却不用delete销毁,直到整个应用程序...
答:
会导致内存泄露
。操作系统管理内存,是有一个资源队列的,用new申请一块内存时,从可用资源中取一块可用资源分配给应用程序。如果没有用delete归还系统,这块内存就不会返回资源队列,无法再分配给其他应用程序。就好像你从图书馆借书,结果看完后你自己把书放回书库,没有在图书管理系统中体现出来这本书...
请教:
C++中,
在【子函数】中
new申请
的
内存
用完不删,会导致内存泄露...
答:
1、
申请
了一片
内存
int[100000]2、申请了了一个指针变量 *p。同时p指向这片内存。在子函数结束以后,会做的事情 1、销毁指针变量*p 注意:只是销售了指针变量,并不会自动的回收int[100000]这片内存
new
出的内存必须要用delete才会回收 结果就造成了这片内存 没有人知道在哪了,因为指向它的指针*p...
C++中new
的用法
答:
C++中new
的用法有三种,具体如下:一、new operator,也叫new表达式;new表达式比较常见,也最常用,例如:上面这个new表达式完成了两件事情:
申请内存
和初始化对象。二、operator
new,
也叫new操作符。这两个英文名称起的也太绝了,很容易搞混,那就记中文名称吧。new操作符类似于C语 言中的malloc,...
C++中new
分配
内存
的
问题
答:
这样是会有
内存
泄漏的,因为第一次执行s =
new
STU; 后,系统
申请
了一块新的内存空间(类型为STU),并把其地址赋给s 第2此执行s = new STU后,系统又申请了一块新的内存空间,并把其地址赋给s,此时把s原来的值覆盖掉了,也就是第一次申请的内存空间的地址丢失了 而delete s; 只是把现在...
我编写了一段
C++
程序,使用
new申请内存
后,如果不用delete,那么析构函 ...
答:
如果
new
的
内存
不delete它就不会释放,析构函数不会执行,这是内存泄露
在
C++中,
使用malloc申请的
内存
能否通过delete释放?使用
new申请
的内存...
答:
malloc /free的操作对象都是必须明确大小的。而且不能用在动态类上。
new
和delete会自动进行类型检查和大小,malloc/free不能执行构造函数与析构函数,所以动态对象它是不行的。当然从理论上说使用malloc
申请
的
内存
是可以通过delete释放的。不过一般不这样写的。而且也不能保证每个
C++
的运行时都能正常。
大家正在搜
new申请内存
new的内存上再new
申请内存
new分配的内存
new分配的内存空间在哪
new malloc内存分配
new3ds内存
new3ds内存卡多少g合适
new3dsll内存32g怎么看