| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3465 人关注过本帖
标题:c语言中的malloc()和realloc()函数的功能在c++中怎么实现?
只看楼主 加入收藏
lixun206
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-1
收藏
 问题点数:0 回复次数:8 
c语言中的malloc()和realloc()函数的功能在c++中怎么实现?
以下的代码中构造空栈和压栈函数中分别用到了malloc()和remalloc()函数,要把那两个函数改c++实现,要怎么改写啊?
我知道c++中new()函数可以分配空间,但怎么分配连续的空间呢?以及怎么在原存储空间后继续分配空间呢?
哪位高手帮下忙,把下面那两个函数改为c++来实现!
#define OK 1
#define ERROR 0
#define OVERFLOW -1

#define STACK_INIT_SIZE 10 //存储空间初使分配量
#define STACKINCREMENT 2 //存储空间分配增量
typedef char SElemType;
struct SqStack{
SElemType *base; //在栈构造之前和销毁之后,base的值为NULL
SElemType *top; //栈顶指针
int stacksize; //当前已分配的存储空间,以元素为单位
};//顺序栈
int InitStack(SqStack &S){ //构造一个空栈
S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); //分配存储空间
if(!S.base) exit(OVERFLOW); //存储分配失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
int Push(SqStack &S,SElemType e){
//插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize){ //栈满,追加存储空间
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); //在原存储空间后接着增加存储空间
if(!S.base) exit(ERROR); //存储分配失败
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*(S.top)++=e;
return OK;
}

搜索更多相关主题的帖子: c语言 malloc realloc 函数 
2007-05-05 01:27
sunrape
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-5-5
收藏
得分:0 
c++不是继承c语言中的malloc()和realloc()函数吗
2007-05-05 03:11
sunrape
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-5-5
收藏
得分:0 


2.S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); //在原存储空间后接着增加存储空间
好象不对把realloc(n,size)n是元素个数,你怎么是地址啊
2007-05-05 03:32
lixun206
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-1
收藏
得分:0 
回复:(sunrape)2.S.base=(SElemType *)realloc(S.b...

我在书上看到的realloc函数是这样的:
函数名: realloc
功 能: 重新分配主存
用 法: void *realloc(void *ptr, unsigned newsize);


c++是继承c语言的,我在VC6.0中编译,这两个函数可以用,但我在Microsoft Visual C++ 2005 Express Edition中就不能用这两个函数,因此想把它改写成用c++语言来实现!


2007-05-05 14:01
jackeyhlj
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:51
专家分:0
注 册:2007-3-27
收藏
得分:0 
C++中可以用new来定义

2007-05-05 20:20
kfiuggt
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-5-8
收藏
得分:0 
我都想知道啊,一起学习下啦。。
2007-05-08 18:28
wangwang168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-5-8
收藏
得分:0 
呵呵加个头文件就能在C++中使用了,#include<stdlib.h>

我有一个梦想
2007-05-21 17:31
neverDie
Rank: 1
等 级:新手上路
威 望:1
帖 子:123
专家分:0
注 册:2007-5-5
收藏
得分:0 
new

delete

2007-05-21 18:30
wujiekangyun
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-4-21
收藏
得分:0 
加头文件#include<malloc.h>

2007-05-22 07:54
快速回复:c语言中的malloc()和realloc()函数的功能在c++中怎么实现?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021803 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved