社区
C++ 语言
帖子详情
const,status,内存分配,new,delete,malloc,free的区别
ap3344
2003-11-23 10:46:49
const,status,内存分配,new,delete,malloc,free的区别
谢谢!!
...全文
164
8
打赏
收藏
const,status,内存分配,new,delete,malloc,free的区别
const,status,内存分配,new,delete,malloc,free的区别 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sixsavage
2003-11-23
打赏
举报
回复
问:malloc的效率体现在哪里?
sixsavage
2003-11-23
打赏
举报
回复
看到书上的一个例子就明白多了。
class Cobj
{
public:
Cobj(){}
~Cobj(){}
void Initialize(void){}
void Destroy(void){}
};
void UseMallocFree(void)
{
Cobj *a=(Cobj *)malloc(sizeof(Cobj)); //申请动态内存
a->Initialize();
//...
a->Destroy();
free(a);
}//由于malloc和free不能调用构造函数和析构函数,所以只有调用成员函数来完成初始化
//和清除工作。
void UseNewDelete(void)
{
Cobj *a=new Cobj;
//...
delete a;
}//用new delete是不是要简单很多了。
fireseed
2003-11-23
打赏
举报
回复
向前兼容,还有就是malloc的效率会比new高一些
sixsavage
2003-11-23
打赏
举报
回复
有疑问就是,为什么c++有了new和delete后还要保留malloc和free呢
fireseed
2003-11-23
打赏
举报
回复
new和delete是一对,malloc和free是一对
new和delete是C++里的,因为C++的面向对象特性,所以在用new和delete对对象进行申请和释放时会掉用对象的构造和析构函数。
malloc和free只是单纯的申请内存空间,不会做其它的一些事情
piaoairy
2003-11-23
打赏
举报
回复
const:
好像const在最初的C语言版本里没有, 是后来C借鉴C++的, e.g:
const int c = 0, 表示在程序中定义一个值始终为10的int型变量c;
和pascal中的const类似。
#define c 10 (enum {c = 0};)
最初C都是用#define来定义的, enum也是ANSI C 89后来加的.
static:
(当static表示变量的存储类型时)
假设在一函数func()中定义一个static变量, e.g:
#include <stdio.h>
void func(void)
{
static int si=0;
si++;
printf("si = %d\n", si);
}
int main()
{
func();
func();
func();
getch();
}
则依次输出1, 2, 3;而不是1, 1, 1(如果不加static)。
既调用同一个函数时为static类型的变量si在堆中分配一个固定不变的内存地址,并且每次调用时不改变si原来的值。
关于内存分配范围太广, 说一下自己的见解。
C语言中用malloc(), free()函数来动态分配内存, 而C++则推荐使用运算符
new 和delete, 也兼容C的这两个函数。不过由于malloc()每次都有进行强制转换因此在
C++中用的不多。注意每一个malloc(),new都要对应一个free(), delete, 否则会一起内存泄漏。
==在下愚见, 希望大家指点。
sixsavage
2003-11-23
打赏
举报
回复
status为何物?
malloc和free为函数,new和delete为操作符。
malloc在申请内存空间的时候要输入该数据结构的字节数,而new不用。
。。。
其他的没有时间在打,吃饭去了,回来再说
sspanzer
2003-11-23
打赏
举报
回复
不用初始化对象呗:)
此外new可以被重载。
基于Web的酒店客房管理系统的设计与实现+论文+开题
硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;6.是否Maven项目:否; 技术栈 1. 后端:Spring+SpringMVC+Mybatis2. 前端:JSP+CSS+JavaScript+jQuery 使用说明 1. 使用...
sizeof,strlen、sizeof的
区别
,
new
,
delete
,
malloc
,struct,union,volatile,extern C,memmove,memcpy,strcpy,atoi
文章目录strlen和sizeof的
区别
new
和
malloc
如何判断是否申请到内存
new
实现原理
delete
实现原理,
delete
和
delete
[]的
区别
new
和
malloc
的
区别
,
delete
和
free
搭配使用C和C++ struct的
区别
struct和union的
区别
class和struct的异同volatile的作用?是否具有原子性,对编译器有什么影响?什么情况下一定要用volatile,能否和
const
一起使用?extern C的作用memmove和memcpy的
区别
以及处理内存重叠问题memcpy
const
,inline,
new
,
malloc
,static关键词详细介绍
const
:
const
修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。
const
推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点 主要作用 (1)可以定义
const
常量,具有不可变性。 例如:
const
int Max=100; Max++会产生错误; (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。 例如: void f(
const
int i) { .........} 编译器就会知道i是一个常量,不允许修改; ...
123道c++笔试题汇总
1.
new
、
delete
、
malloc
、
free
关系
new
和
delete
对应、
malloc
和
free
对应。
new
和
delete
是c++语言的标准库函数,而
malloc
和
free
是c++的运算符。 它们都可用于申请动态内存和释放内存,
区别
在对非内部数据类型的对象而言,
malloc
和
free
无法满足动态对象的要求(因为对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数) 2.
delete
与
delete
[]的
区别
delete
只会调用一次析构函数,而
delete
[]会调用每一个成员
C++使用
new
和
new
[]操作符分配内存时的调用栈跟踪显示2
我们可以通过这个技术分析内存泄漏的调用函数和位置。 #include <Windows.h> #include <ImageHlp.h> #include <iostream> #include <string> #include <atlutil.h> #include <memory> #pragma comment(lib, "ImageHlp.lib") LONG DumpExceptStack(LPEXCEP.
C++ 语言
64,642
社区成员
250,580
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章