📄 subject_39354.htm
字号:
<p>
序号:39354 发表者:lujinl 发表日期:2003-05-10 11:35:15
<br>主题:求教 stack overflow 如何解决
<br>内容:我定义了一个数组,int [512][512][4],运行时报错:stack overflow.<BR>请问如何解决??
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:xiongli 回复日期:2003-05-10 13:11:26
<br>内容:这样<BR>先virtualalloc sizeof(int)*521*215*4<BR>然后把返回的pointer强制转换成int [512][512][4]<BR><BR>最后是用完了virtualfree就可以了<BR><BR>也就是说这么大的数据你最好不要用stack,而是直接申请memroy,或者用heap,但是实质都一样,都是用virtualalloc.heap适合小块内存.<BR>如果要详细知道,请阅读advanced windows
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lujinl 回复日期:2003-05-10 15:41:40
<br>内容:我查msdn没有virtualalloc的说明,帮我详细写一下好吗,多谢!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:syncmaster 回复日期:2003-05-10 15:55:23
<br>内容:LPVOID VirtualAlloc(LPVOID lpAddress,DWORD cbSize,DWORD fdwAllocationType,DWORD fdwProtect);<BR>lpAddress:指向一个内存地址,系统将会在这里保留内存空间,大多数时候位NULL,系统自 动 搜索合适的空间;<BR>cbSize:保存区域的大小,为cpu页面的整数被(64kb的整数被),不满足,系统自动舍入.<BR>fdwAllocationType: 告诉系统是要保留区域(MEM_RESERVE)还是提交物理存储(MEM_COMMIT).<BR>fdwProtect:保护属性<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lujinl 回复日期:2003-05-10 17:11:07
<br>内容: LPTSTR lpBuffer;<BR> HANDLE hHeap;<BR> hHeap=GetProcessHeap();<BR> lpBuffer=(LPSTR)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,512*512*4);<BR> 请问如何将lpbuffer强制转换为int bmp_data[512][512][4];
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-05-10 18:17:49
<br>内容:/* <BR> a simple sample <BR>*/<BR><BR>#include "stdafx.h"<BR>#include <malloc.h><BR>int main(int argc, char* argv[])<BR>{<BR> int *base = (int *) malloc(512 * 512 * 4 * 4);<BR> typedef int (*array_ptr)[512][4];<BR> array_ptr p = (array_ptr)base;<BR><BR> p[0][0][0] = 0;<BR><BR> printf("Hello World!\n");<BR> return 0;<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lujinl 回复日期:2003-05-10 20:42:22
<br>内容:楼上的兄弟:<BR> 我对程序中的p赋值,如:p[5][5][0]程序执行了非法操作,why??
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiongli 回复日期:2003-05-10 21:03:45
<br>内容:我去调试了<BR>怎么没出错?<BR>你可以看看malloc的返回值是不是NULL
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lujinl 回复日期:2003-05-10 21:11:43
<br>内容: int *base = (int *) malloc(512 * 512 * 4);<BR> typedef int (*array_ptr)[512][4];<BR> array_ptr p = (array_ptr)base;<BR>申请的p各维的大小为1*512*512<BR>请大虾指点!!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lujinl 回复日期:2003-05-10 21:41:05
<br>内容:malloc的返回值不是NULL,我对p[0][0][0]-p[0][512][512]赋值均正确,<BR>但p[1][0][0]开始就报错???
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lujinl 回复日期:2003-05-10 22:24:54
<br>内容:申请的p数组,p[3][511][511]可以赋值,但对p[511][511][3]赋值时报错???
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:donald 回复日期:2003-05-10 22:48:10
<br>内容:。<BR>2003-5-10 22:50:16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -