由买买提看人间百态

topics

全部话题 - 话题: 堆栈
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
l*********s
发帖数: 5409
1
来自主题: Java版 - generic 太长怎么办?
900k个单词,每个都是一个键。如果不是乱序输入,整个splay树只有一个分枝,很容
易就堆栈溢出了。
改乱序输入单词构建splaytree_map呢,2000个左右的单词没有问题,一超过就挂机了
。都不知道该怎么去debug. :-(
b***i
发帖数: 3043
2
我的理解
java是pass by value。所以,传入一个整数作为参数到函数里面是不能改变函数外面
那个 变量的值 的。
而那些复杂的类,传入的是类的地址的值。在这里,类的值就是变量地址的值。因为
java里面不讲地址,但本质上就是堆栈里面的地址。当你传入类变量的地址,当然可以
根据地址改变地址指向的那个数据,但是不能改变该变量本身的地址。这和C语言里面
传入一个指针,可以改变指针指向的数据,但是不能改变指针本身是一样的。
F*******X
发帖数: 143
3
不是大牛,也来吹一吹。我认为架构是需要一定的经验累积和堆栈来呈现,是一种
vision,而精通各种framework和工具也只能算是一种training。framework和工具会日
新月异,层出不穷,怎样才能到精通,就是通了某种,不久其他的又出了。
z****e
发帖数: 54598
4
算法离开了学校之后你就差不多丢掉了
比如工作中大部分时候不用递归,dp也不怎么用
一个递归就有可能造成内存堆栈溢出,谁敢用?
工作中用算法的机会少之又少
尤其是各种tree和linkedlist
最常用的是arraylist和hashmap还有hashset什么
而这些东西的算法又是简单不过的
搞算法的主要是数学系那帮人在弄
比较适合research,但是大部分公司没有这种比较纯粹的research部门
linkedin或者netflix要有这种部门就夸张了
ibm这么大型的机构应该会有,但是工作机会就那么点
可能还不如大学里面发考题的位置多
N****w
发帖数: 21578
5
既然都 gdb 了,看看堆栈里传进来的指针指向啥内容了
c***h
发帖数: 80
6
来自主题: Programming版 - A question about c++ pointer
程序本身的数据段里 (程序有代码段、数据段、堆栈段等segment,可以去查阅汇编语
言的书籍)
c***h
发帖数: 80
7
来自主题: Programming版 - 请教一个作用域的问题
不能从作用域内访问外面是C++的铁律。当然你也可以通过汇编来倒着找堆栈来得到外
面M的值;)
c***d
发帖数: 996
8
来自主题: Programming版 - [合集] 请问关于堆栈的问题
☆─────────────────────────────────────☆
dickkie (大红椒) 于 (Sun Oct 28 23:59:16 2007) 提到:
请问在C++中,内存分配是否严格的按照此规矩:
只有用new生成的对象才在堆上,其余的一律为栈上或全局变量区
小弟有此问题,是因为教科书上说动态内存分配即堆,它的好处是能在runtime时才确
定具体需要多少对象然后生成,而动态内存分配是由new来完成,那么在此例子中:
int i;
cin >> i;
if(i==10) {
int i=3;
string str="foo";
}
请问这里if里的i和str是在栈上还是堆上?
l**t
发帖数: 64
9
来自主题: Programming版 - 问一个C++下的Bug(Linux下)
既然你都调试了,为什么不跟进去看看cpu100%时执行的是什么代码,一般跟进去基本
就能知道问题原因
某些linux下能正常运行并不表示程序没问题,因此,这个程序肯定是有问题的
printf的测试不容易看出问题,可能是程序多线程运行共享数据未作保护导致的,也可
能是程序本身内存越界问题,不同的操作系统、编译器对堆栈的设置的大小都是不同的
,使得越界访问造成的后果也不同,当然还有更多的可能性
但是归根结底一句话,你的程序有问题
LAPACK直接用fortran版的不是很好么,C++里也能调用啊,在矩阵传进去前转置一下,
算完后再转置回来就能避免矩阵按行存储和按列存储的差异,而且你在linux下用GCC的
编译器,不同语言交叉编译非常方便啊
我在windows下就用的C++调用fortran版的lapack,用了boost.ublas boost.bindings
lapack atlas,很方便。

有一个奇怪的bug, 在某些
束。我debug的时候发现,在某一
就能顺利执行。
为什么只在某些platform下出为题
b***y
发帖数: 2799
10
☆─────────────────────────────────────☆
observer (笑看人生) 于 (Sun Jun 10 14:43:21 2007) 提到:
从这个版受益很多,攒人品
尽量用中文,免得google到麻烦
就是那个一个数组3堆栈了,空间复杂度O(1)
闲话少说,上code,
思路很简单,就是两头各一个stack,
第3个stack放中间,浮动的,可以往左、右推
有啥bug随便挑,轻点拍啊
#include
#include
using namespace std;
const int n=3;
int R[3*n];
int TopA = 0, TopB = 2*n - 1, BottomB = 2*n-1, TopC = 3*n -1;
bool IsABFull(){return TopA == TopB + 1;};
bool IsBCFull(){return BottomB == TopC;};
int MoveBLeft()
{
// can not move
X****r
发帖数: 3557
11
来自主题: Programming版 - 求C/C++面试题
没错,实打实的编程就是很好的面试题。
我最近比较常用的面试题就是不用现有库写一个通用的堆栈类,
应该说是不能更简单的题了,但是还是能暴露很多问题。
X****r
发帖数: 3557
12
来自主题: Programming版 - 问个关于数组的问题
堆栈上放不下这么大的数组。在数组前加static关键字。

什么
b***i
发帖数: 3043
13
来自主题: Programming版 - C++的exception大家常用吗?
很多人不理解异常,是因为没有进行大规模的程序编写。当你的程序超过一万行,非常
复杂的时候,异常处理就非常方便了。
另外一点,异常并不是系统出错了,而是你自己产生错误信号和抓住错误信号。比如,
你的某个类的虚函数被子类实现了,每个子类都要用throw产生错误信号,而基类
的函数通过try调用子类实现的虚函数,并catch子类产生的错误信号,然后统
一处理。通过这种方式,程序实现了不同于正常return返回的方式,而是通过t
hrow被上面catch住,不用层层返回函数堆栈。错误信号Exception
也是你自己定义的类,其中可以包含所有出错的原因,子类的名字等信息,让错误处理
非常方便。
找几个高手的程序源代码,看明白,修改,就懂了。
c**b
发帖数: 2999
14
其实c++ 的目的还是很明确的.比如helper operators,copy constructors等等,看得出
来c++让程序员自己定义class到自己定义operators.當然,它的堆栈的概念在c语言里就
显得很高妙. 反正看C++的书,很有兴趣.
t****t
发帖数: 6806
15
堆栈上溢出了会冲掉返回地址, 堆上溢出有什么用?
至于每次是不是分配不同的地址, 你为什么不写个程序把地址打印出来看看?
a*****a
发帖数: 1429
16
来自主题: Programming版 - 专业c++程序员都用什么ide (转载)
那位就瞎掰。还有什么等同于图灵机,一个递归就让编译器忙几个月,逗死了。他不知
道所有电脑语言都是图灵完备的。也显然不知道什么是堆栈,什么是stack overflow.
l********a
发帖数: 1154
17
来自主题: Programming版 - vector的析构问题

这是从书上看的,说是vector退出code block并不会真正释放内存
需要跟空vector来swap交换,所以才加上去的
我看报错的位置,应该是deallocate的时候出错了,跟swap这句关系好像不大
我每次跟踪调试到那个delete _Ptr那句的时候,就没有上下文了,找不到到底哪里出的
错,但是vs ide的函数调用堆栈前面几个倒都是A **的析构,可能析构A *的时候编译器
需要A *的地址
X****r
发帖数: 3557
18
来自主题: Programming版 - heap&stack Linux vs. Windows
我很好奇你怎么得出你的结论的。
堆栈的方向是体系结构决定的,不是操作系统决定的。
w***g
发帖数: 5958
19
来自主题: Programming版 - 算法导论重点
上次在CS版答应给划重点的,发到这儿算了。我手上是第二版。我觉得转行的没有基础
的看完下面这些(约300页,全书1/3的样子)在算法上基本上能达到科班出身水平。可
以按书本身的顺序看,也可以按下面给出的顺序看。
A. 基本概念
1-3 pp.1-61
B. 基本程序设计方法
穷举法 看眼八皇后问题的接法和产生全排列的方法
贪心法 16.1-16.3 pp.370-393
23.1-23.2 pp.561-580
动态规划 15.1-15.4 pp.323-356
分治法(divide and conquer) 本书没有专门的章节讲这个,需要自己随便上网搜搜。
结合下面章节看
选中位数 9.1-9.3 183-189
快速排序和二分查找
回溯(recursion) 这个是具体的实现方法,可以和上面三类方法结合。书中没有。可以
自己动手编一下算fibonacci数和解Tower of Hanoi问题的算法,体会一下回溯算法的
基本结构。看眼下面的页面
http://en.wikipedia.org/wiki/Memoiz... 阅读全帖
w***g
发帖数: 5958
20
来自主题: Programming版 - 算法导论重点
上次在CS版答应给划重点的,发到这儿算了。我手上是第二版。我觉得转行的没有基础
的看完下面这些(约300页,全书1/3的样子)在算法上基本上能达到科班出身水平。可
以按书本身的顺序看,也可以按下面给出的顺序看。
A. 基本概念
1-3 pp.1-61
B. 基本程序设计方法
穷举法 看眼八皇后问题的接法和产生全排列的方法
贪心法 16.1-16.3 pp.370-393
23.1-23.2 pp.561-580
动态规划 15.1-15.4 pp.323-356
分治法(divide and conquer) 本书没有专门的章节讲这个,需要自己随便上网搜搜。
结合下面章节看
选中位数 9.1-9.3 183-189
快速排序和二分查找
回溯(recursion) 这个是具体的实现方法,可以和上面三类方法结合。书中没有。可以
自己动手编一下算fibonacci数和解Tower of Hanoi问题的算法,体会一下回溯算法的
基本结构。看眼下面的页面
http://en.wikipedia.org/wiki/Memoiz... 阅读全帖
b***i
发帖数: 3043
21
假设单片机有16个字节的堆栈,然后函数f, g, h, k,i互相调用,假设调用了17次,那
么返回的时候,
最开始的f地址被最后的函数地址覆盖,返回的时候不就回到错误的地方了?
g****t
发帖数: 31659
22
风格这个东西应该是因应用环境而有区别的.
C code有很多是和关键性的硬件相关的,这种情况下,用冗余代码换取极端的robustness
,这个方向肯定是正确的.
tab这个我倒不懂为什么.是不是会让有些分析代码文本,算内存或者算堆栈的工具出错?

at ibm os code base all c code forbids tab.
exception
s*****V
发帖数: 21731
23
来自主题: Programming版 - C语言高级就高级在指针上
不能操作堆栈,寄存器的都是渣
B******k
发帖数: 44
24
来自主题: Programming版 - 能发自学日志么?
一个月了,报告一下:
数据结构暂时没有继续学下去,只学了链表和堆栈以及队列,后头的树因为还没用到所
以就还没学。SDL也是边用边学,目前学到这里十八课:
http://lazyfoo.net/SDL_tutorials/index.php
游戏写了四个了,tic-tac-toe,snake,pong以及目前基本写完懒得继续填feature的
breakout。接下来想写的是一个platformer,主要是锻炼以下能力:
读txt格式文件(platformer有关卡的概念了)并将其储存信息合理的读到class中;
简易关卡编辑器,其实就是按照事先想好的格式写txt文件;
学习怎么样读和显示tiles,这个应该不难,但是我琢磨着因为platformer的tiles很多
,我是不是要专门用txt文件存放每个tile的信息(这个目前已经完成,其实很简单,
因为每个tile只有位置和sprite ID这三个信息);
简单的AI,我估计我要学树和寻路了。。。
对了,至今我还没学会怎么样静态编译SDL项目,擦。。。
a****r
发帖数: 71
25
来自主题: Programming版 - 请教windows 7 怎么增加堆栈上限
跑matlab做DFS,recursion limit可以设到800,再大就直接crash了,请教怎么能调大
点,看到有人可以设到上万。
k**********g
发帖数: 989
26
来自主题: Programming版 - 请教windows 7 怎么增加堆栈上限

http://superuser.com/questions/340239/how-to-increase-stack-siz
Also, try to identify where the stack limit overflow is caused by the C/C++
code or Java code, because their stack limits and usage patterns are
completely different. C/C++ code use the OS thread stack directly; Managed
languages such as .NET (C#) and Java had their own abstractions over OS
thread.
MATLAB itself is implemented using a mixture of C/C++ and Java.
For Java code, increase both the Java stack size and the Java heap size... 阅读全帖
x****u
发帖数: 44466
27
来自主题: Programming版 - 转:王垠--一种新的操作系统设计
Lisp放入内核态,整个堆栈,虚拟内存机制全都完蛋,放入CPU,流水线,分支预测等
等全都要完蛋。
至于编译质量低下还真不是大问题,现在的编译器前端只管翻译到中间代码,优化,机
器码生成和机器码优化都是统一的。

么?
d***a
发帖数: 13752
28
来自主题: Programming版 - 树的前序遍历
栈数据结构的效率,比程序堆栈的效率高,不用压入返回地址和局部变量。
c*****z
发帖数: 171
29
非法指针出的general protection应该是可以扑捉的, 堆栈溢出就不一定了.
c*****a
发帖数: 1638
30
来自主题: Programming版 - 澄清微软和Cloud的误区
1, aws当然有私有云。amazon可以把你的内部网扩展到aws里(VPN)。事实上,所谓私
有云是个伪命题,除非公司确实足够大,像yahoo、google这样的,还比较有意义,否
则内部租用设备意义不是很大(除非真的有巨大而且不同的研发部门,大量不同的大计
算需求)。
2,aws里面就算是windows也比azure便宜吧?
3,坦率说,云里面,现在只有java有供给。点网也是邪道。
4,你究竟想说啥?
5,别胡说了...
6,嗯,是你孤陋寡闻。
我在的公司是个windows shop的非IT公司。
前两天开会的时候,infra的头做了关于云的报告,半天下来就是一个意思,除了aws,
别的云都是邪道(要知道这个头只会windows,不会linux)。我们基本上属于买得起任
何设备,用得起任何咨询的公司。钱不是问题,但是抛开钱不说,azure和其他的任何
cloud在目前来说都不能和aws比,算上钱就更没别家什么事了。
azure我们也评估了,大概可能把exchange放上去,剩下的就没考虑了。
现在不是java和.net的竞争,是aws和剩下所有人的竞争。aws对azure的优势比... 阅读全帖
N******K
发帖数: 10202
31
排个序 堆栈 就叫算法了?
N******K
发帖数: 10202
32
比如一个类 TestClass
class TestClass
{
int m_value;
std::vector m_DataArray;
// memeber function
}
可以改为:
struct TestClassMemberVarible
{
int m_value;
std::vector m_DataArray;
}
class TestClass
{
std::shared_ptr m_MemberVarible;
// memeber function
void Share(TestClass& InputClass)
}
如果所有的类都这么设计 可以不用写 share_ptr 和 new 直接用堆栈
真正的类成员都在heap 所谓的类只是一个壳子+shared_ptr+函数 这样永远不会形成
shared_ptr 循环引用
也可以建立 一个类的array 类似 存在array的referece
TestClass A;
TestClass B;
... 阅读全帖
o**o
发帖数: 3964
33
来自主题: Programming版 - C++的牛B之处你们都还没体会到
这个视频很不好 典型的FP showoff。让初学者以为FP就是内建库函数的one liner. 他
应该介绍怎么实现这样一个库函数。
很多介绍新语言都show off程序短。但实际上程序多少行,语法是否简洁对于一个工程
根本不重要,因为极少的时间是用在打字上。我觉得重要的是容易读懂,容易debug,
编译以后执行效率高。如果只是形式上简洁,但是需要编程的人在脑子里实现堆栈,说
不定跟RPN计算器一样被淘汰
D***n
发帖数: 6804
34
来自主题: Programming版 - C++的牛B之处你们都还没体会到
Functional 语言在学术上解决特定问题i可以,在实践中大规模应用不行。这样的语言
严重依赖虚拟机/编译器,因为当前计算机体系结构本质并不是这么设计的:
例如:打印100行Hello world,用如果用汇编语言里面无非就是
1))往ECX 中装入一个100
2)打印hello world
3)ECX减去1
4)测试ECX
5)根据结果跳转(JNZ比如)。
这个和C 里面的For语言对应的很好,一条对一条。而FP呢?如果编译器不够智能地猜
出你要做记数循环,采用递归实现意味着你需要执行100次calling convention (以
X86为例):
1)上级栈地址压栈,设新栈地址
2)参数和返回结果压栈(100, 99,98...)
3)执行函数(函数里一个if statement判断是否到头,再打印Hello world)
4)清理堆栈,返回结果
然后这破事要在栈上搞弄100次。执行效率至少慢了400-1000%(Call/Ret指令很费CPU
周期,而且函数压栈这些都是内存操作),这么差的效率怎么玩I/O?
o**o
发帖数: 3964
35
来自主题: Programming版 - C++的牛B之处你们都还没体会到
这个视频很不好 典型的FP showoff。让初学者以为FP就是内建库函数的one liner. 他
应该介绍怎么实现这样一个库函数。
很多介绍新语言都show off程序短。但实际上程序多少行,语法是否简洁对于一个工程
根本不重要,因为极少的时间是用在打字上。我觉得重要的是容易读懂,容易debug,
编译以后执行效率高。如果只是形式上简洁,但是需要编程的人在脑子里实现堆栈,说
不定跟RPN计算器一样被淘汰
D***n
发帖数: 6804
36
来自主题: Programming版 - C++的牛B之处你们都还没体会到
Functional 语言在学术上解决特定问题i可以,在实践中大规模应用不行。这样的语言
严重依赖虚拟机/编译器,因为当前计算机体系结构本质并不是这么设计的:
例如:打印100行Hello world,用如果用汇编语言里面无非就是
1))往ECX 中装入一个100
2)打印hello world
3)ECX减去1
4)测试ECX
5)根据结果跳转(JNZ比如)。
这个和C 里面的For语言对应的很好,一条对一条。而FP呢?如果编译器不够智能地猜
出你要做记数循环,采用递归实现意味着你需要执行100次calling convention (以
X86为例):
1)上级栈地址压栈,设新栈地址
2)参数和返回结果压栈(100, 99,98...)
3)执行函数(函数里一个if statement判断是否到头,再打印Hello world)
4)清理堆栈,返回结果
然后这破事要在栈上搞弄100次。执行效率至少慢了400-1000%(Call/Ret指令很费CPU
周期,而且函数压栈这些都是内存操作),这么差的效率怎么玩I/O?
D***n
发帖数: 6804
37
来自主题: Programming版 - 请不要盲目崇拜FP语言
Functional 语言在学术上解决特定问题i可以,在实践中大规模应用不行。这样的语言
严重依赖虚拟机/编译器,因为当前计算机体系结构本质并不是这么设计的:
===============================
例如:打印100行Hello world,用如果用汇编语言里面无非就是
1))往ECX 中装入一个100
2)打印hello world
3)ECX减去1
4)测试ECX
5)根据结果跳转(JNZ比如)。
这个和C 里面的For语言对应的很好,一条对一条。而FP呢?如果编译器不够智能地猜
出你要做记数循环,采用递归实现意味着你需要执行100次calling convention (以
X86为例):
1)上级栈地址压栈,设新栈地址
2)参数和返回结果压栈(100, 99,98...)
3)执行函数(函数里一个if statement判断是否到头,再打印Hello world)
4)清理堆栈,返回结果
然后这破事要在栈上搞弄100次。执行效率至少慢了400-1000%(Call/Ret指令很费CPU
周期,而且函数压栈这些都是内存操作),这么差的效率怎么玩I/O?
除... 阅读全帖
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)