VC程序分配内存好像分两种:栈,堆。
在堆上面分配是不是(只有)new和delete这种方法?
再栈上面分配,是不是(只有)局部变量?
另外栈,堆所能使用的系统内存有没有限制?
好像堆上面是没有的,直到系统的虚拟内存都用光了才会无法分配。
那么栈上面呢?好像能在栈上面分配的内存很少,只有几k。
在堆上面分配是不是(只有)new和delete这种方法?
再栈上面分配,是不是(只有)局部变量?
另外栈,堆所能使用的系统内存有没有限制?
好像堆上面是没有的,直到系统的虚拟内存都用光了才会无法分配。
那么栈上面呢?好像能在栈上面分配的内存很少,只有几k。
解决方案 »
- 如何用VC++编写程序打开并在视窗口中显示指定格式的文件?
- 在建立数据库连接前,需要定义一个CDataBase 对象,代码如下,帮我看下要插在哪个文件里面
- 准备到惠州去开超市
- ###怎样释放获得DCD###
- 为什么我编的DLL编译以后的导出函数名总是有多余的字符 ?
- 如何使用ATL编制ActivX控件,在该控件中使用windows标准控件,如button,text等?
- 关于VC 对 excel文件的操作
- C或者WinAPI有没有填充多个变量的函数?就像Pascal的FillChar那样?
- 怎样编写漂亮的窗体? XP风格??
- 如何使用CHtmlCtrl调用JS中的方法函数,用了网上的方法,没反应
- CloseHandle关掉一个管道句柄时特别慢,为什么
- listctrl,treectrl的内容显示出现问题?
When new is used to allocate memory for a C++ class object, the object's constructor is called after the memory is allocated.Use the delete operator to deallocate the memory allocated with the new operator.When delete is used to deallocate memory for a C++ class object, the object's destructor is called before the object's memory is deallocated (if the object has a destructor).
2.在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 3.从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。
现在我们假设server的内存足够大,关键就是如果我们都使用局部变量,而不是通过new来在堆上面申请,会不会出现由于栈“分配的内存容量有限”,使得本来我们可以用到的内存无法使用,造成程序错误。
就是说栈“分配的内存容量有限”究竟是什么限制?如何限制?或者有什么更好的解决方法(用new的办法算一种)。
是否可以考虑,分次提取、操作数据。这样虽然增加了从数据库读取数据的次数,但是处理的速度应该比较好,而且不容易产生内存不足的现象。
定义一个size,如果数据超出这个size,就分次读取。可以将buffer定义在栈上,也可以定义在堆上。