什么时候必须采用动态内存分配器 c++

扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
每个选项的解析。C++对于动态分配内存空间描述正确的是
DA.使用new运算符分配的内存空间的长度必需是常量 B.delete运算符可以释放动态的存储空间和静态的存储空间C.由new分配的内存空间是不连续的D.delete运算符只能释放由new分配的动态存储空间
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
new和delete 是用来申请/释放动态空间的其中,new用来申请,可以是任意长度的。常见的是 int * p = new int [n]; 这种形式的其中n可以是常量,也可以是变量。对于四个选项A错在,可以是变量B 错在,只能释放由new得到的动态内存,不能是静态的C错在,new得到的内存是连续的D 是唯一正确的。 delete是和new搭配的,不是new出来的,它没法操作。
为您推荐:
扫描下载二维码一、先来谈谈在C语言下,动态内存分配和释放的特点。
在C语言下究竟如何实现动态内存分配 malloc(), calloc(), realloc(), 而释放内存的函数为free(),分别探讨他们的异同。
1.malloc函数
  函数原型为void *malloc(unsigned int size);在内存的动态存储区中分配一块长度为&size& 字节的连续区域。函数的返回值为该 & 区域的首地址。 “类型说明符”表示把该区域用于何种数据类型。(类型说明符*)表示把返回值强制转换为该类型指针。例如: pc=(char *) malloc (100);&
2.calloc 函数
& & & 函数原型为void *calloc(unsigned int num, unsigned int size)
  &函数返回该存储区的起始地址。calloc函数与malloc 函数的区别仅在于一次可以分配n块区域。例如: ps=(struct stu*) calloc(2,sizeof (struct stu)); 其中的sizeof(struct stu)是求stu的结构长度。
3. realloc函数:
  函数原型为void *realloc(void *ptr, unsigned int size)
& & 例如p1=(float *)realloc(p1,16);将原先开辟的8个字节调整为16个字节。
4. free函数:
  函数原型为void free(void *ptr)
  将以前开辟的某内存空间释放。函数原型为 void free(void *ptr)其中ptr为存放待释放空间起始地址的指针变量,函数无返回值。应注意:ptr所指向的空间必须是前述函数所开辟的。例如free((void *)p1);将上例开辟的16个字节释放。可简写为free(p1);由系统自动进行类型转换。
二、C++语言动态内存分配
C++语言中用new和delete来动态申请和释放内存。
1. 申请单个对象
  int *p;
  p=或者 p=new int(value);
  2. 动态申请数组
  int *p;
  p=new int [100];
  这样可以申请长度为100的数组,但是不能进行初始化。
 3. delete
  int *p, *q;
  q=new int[10];
  delete [ ]q;
阅读(...) 评论()小木虫仪器共享
lab.muchong.com
实验样品检测、分析CNAS/CMA认证资质
当前位置:
&C++动态内存申请和释放所占用时间
C++动态内存申请和释放所占用时间
作者 lixy1217
我感觉申请和释放动态内存所占用的时间好像远远大于普通计算(+&&-&&*)所占用的时间。
那么,在运用类和operator来进行矩阵运算时,每一次运算就至少要进行一次内存的申请释放,如果一个算法程序要进行大量的矩阵运算,那么岂不是要在这方面浪费太多的计算时间,有没有什么办法能够克服这一点,使得不需要每次矩阵运算都进行一次这样的内存操作?
唔。。你可以开一块比较大的空间,不释放而是放在一块链表里,自己使用那块空间就好了,这也是STL的做法
其实你也可以尝试下Blitz++的库,它用了模板元编程,效率远高于常规C++程序和C程序,
申请内存的执行速度怎么能和加减法相比较……差的也太多了啊
或者你在计算之前就将内存开辟好,然后将指针或者引用传递进函数,所有函数都直接计算,不存在开销
内存的申请和释放只(尽可能)在主函数完成
24小时热帖
下载小木虫APP
与700万科研达人随时交流什么时候必须采用动态内存分配 c++_百度知道
什么时候必须采用动态内存分配 c++
我有更好的答案
因为那里的学生数量你不知道。你的程序就不好拆分成模块,也无法分层。说白了你的程序就无法让更多人参与?很大,浪费空间,函数内部的局部变量,发生变化也不好改,因为你不知道这个全局变量到底有多少地方在使用。那你只能使用全局固定长度的数组,应该够让你理解这个问题的了,就其本身来说就比较浪费空间这个问题当时困扰了我很久,动态内存就不存在这个问题。你的程序想稳定的运行就有一个或多个定时炸弹:事先的程序开辟的静态内存不够用了,函数内部的定长数组,每个要参与进来的人都要知道全部细节,这些数据上面说了都在全局变量或者全局数组里。等等吧,先说这么多,很小可能不够用,这个人力成本就高了,全局变量。这些数据先不说程序复杂了以后的事,你就要改程序。你的程序不能给更多的人用,我应该可以给你讲明白。极端一点。你的程序要处理很多事情的时候必然要查询某些数据,所有程序都可以不用动态内存。因为你打算把存在文本文件里的班级同学的基本信息加载到内存里来修改再存回文件的时候,你先开辟多大的数组呢
采纳率:70%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。动态分配的内存何时释放?【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:297,896贴子:
动态分配的内存何时释放?收藏
#include&iostream&#include&string&#include&algorithm&const int MAXSTUDENT=1000;const int MAXPROBLEM=10;struct student{ string ID; int pro_ bool operator&(const student &v2)};bool student::operator&(const student &v2) const{ if(total&v2.total||(total==v2.total&&ID&v2.ID)) else}int pointEachPro[MAXPROBLEM];int main(){ int stuNumber,proNumber,scoreL while(cin&&stuNumber&&stuNumber) {
student *students=new student[stuNumber];
cin&&proNumber&&scoreL
for(int ix=0;ix&proN++ix)
cin&&pointEachPro[ix];
int crosstheLine=0;
for(int ix=0;ix&stuN++ix)
cin&&(students+ix)-&ID&&(students+ix)-&pro_
(students+ix)-&total=0;
for(int j=0;j&(students+ix)-&pro_++j)
int whichIsS
cin&&whichIsS
(students+ix)-&total+=pointEachPro[whichIsSolved-1];
if((students+ix)-&total&=scoreLine)
++crosstheL
sort(students,students+stuNumber);
cout&&crosstheLine&&
for(int ix=0;ix&stuN++ix)
if((students+ix)-&total&=scoreLine)
cout&&(students+ix)-&ID&&" "&&(students+ix)-&total&& }}student *students=new student[stuNumber];students指针应该何时delete?
产销量连年位于国内喷码机行业前列!
不再使用的时候
直接x了什么内存都浮云了
登录百度帐号推荐应用

我要回帖

更多关于 动态内存分配 的文章

 

随机推荐