C++怎么定义一个指定大小的堆栈?
请问一下堆栈一定要自己写吗?为什么网上的好多都是自己实现结构体的定义和push,pop的方法,可不可以直接引用啊?两种方法的区别在哪里啊?好迷茫。。。能不能举例说明一下...
请问一下堆栈一定要自己写吗?为什么网上的好多都是自己实现结构体的定义和push,pop的方法,可不可以直接引用啊?两种方法的区别在哪里啊?好迷茫。。。能不能举例说明一下
展开
4个回答
展开全部
C语言的堆栈我也没用过。
不过C语言能自己定义个堆,用malloc函数,然后自己写几个函数,模拟入栈堆栈。
在汇编中,堆栈是通过寄存器内部地址指向,来定义栈顶的,大小未定义。
然后从这个栈顶开始,用PUSH往栈里添加(入栈),用POP往栈里取出(出栈)。
具体的汇编指定举例如下:
push ax //把寄存器ax的值压入栈
pop ax //取栈的值,到寄存器ax中
而栈的地址则有ss、sp这两个寄存器指定,栈没有大小,要人工防止溢出。
具体C结合汇编,是一定能写出一个堆栈的,不过可能比较麻烦,我也刚研究汇编,不是太懂。这里只能给楼主一些思路。
不过C语言能自己定义个堆,用malloc函数,然后自己写几个函数,模拟入栈堆栈。
在汇编中,堆栈是通过寄存器内部地址指向,来定义栈顶的,大小未定义。
然后从这个栈顶开始,用PUSH往栈里添加(入栈),用POP往栈里取出(出栈)。
具体的汇编指定举例如下:
push ax //把寄存器ax的值压入栈
pop ax //取栈的值,到寄存器ax中
而栈的地址则有ss、sp这两个寄存器指定,栈没有大小,要人工防止溢出。
具体C结合汇编,是一定能写出一个堆栈的,不过可能比较麻烦,我也刚研究汇编,不是太懂。这里只能给楼主一些思路。
展开全部
自己实现结构体的定义和push,pop的方法一般是C语言,C++中提供了STL就是标准模板库,里面有常用的数据结构,栈、队列、优先队列等,建议C++使用STL。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c++定义一个指定大小的堆栈使用如下方式:
堆空间一般有操作系统的堆管理器来处理,栈空间一般是应用程序自动回收管理的,以Windows为例,每一个应用程序默认的堆和栈空间大小都为1M。用户可以使用如下预处理命令指示链接器设置堆或者栈空间的大小。
#pragma comment(linker, "/STACK:1024000000,1024000000")
/STACK:[保留虚拟内存],[提交虚拟内存] ,这里的大小都是字节。所以上面的1024000000是字节数。
堆空间一般有操作系统的堆管理器来处理,栈空间一般是应用程序自动回收管理的,以Windows为例,每一个应用程序默认的堆和栈空间大小都为1M。用户可以使用如下预处理命令指示链接器设置堆或者栈空间的大小。
#pragma comment(linker, "/STACK:1024000000,1024000000")
/STACK:[保留虚拟内存],[提交虚拟内存] ,这里的大小都是字节。所以上面的1024000000是字节数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以直接引用。
#include<stack>
stack<int>s1(30);//定义一个30大小的int型栈
#include<stack>
stack<int>s1(30);//定义一个30大小的int型栈
追问
那stacks1(30)这样同时就分配好空间,后面直接就可以push,pop而不用malloc了吗?
追答
是的,这是STL的库,都定义好了,直接用。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询