Redian新闻
>
求助:关于指针和数据存储
avatar
s*z
2
大家好,
我在想办法一些图像从camera写到内存,最后再存到硬盘里。
我刚开始学,很多地方不太懂,请大家帮帮忙。
我的思路大概就是,先申请存储一幅图像的内存(指针pic12),再申请存储所有1000幅
图像的内存(指针picAll). 然后让pic12指向picAll的起点。 接着开始采集图像,每采
集到一幅图像就用pic12写到picAll里面,然后pic12再向下移动一个frame. 采集完所
有图像以后,再全部用fwrite写到硬盘里。
关于指针,我不知道我用 pic12=(word *)GlobalAlloc(GPTR,2*iXRes*iYRes)) 分配内
存以后,再用pic12++的话,指针会不会移动一个frame(2*iXRes*iYRes bytes)?
另外,一次用 GlobalAlloc 申请357M的内存不知道会不会有问题, 我用的系统是XP
professional,机器装了4G的内存。
这样做行不行。 大家帮忙看看,感激不尽!
int NumFrames=100; //Number of all frames
FILE *fp;
if( (fopen_s(&
avatar
z*y
4
你既然已经分配了一个大的内存(picAll),就没有必要再分配一幅图像的内存了。
pic12++是不会移动一个frame的,而是一个WORD(如果pic12定义为WORD指针)。所以
你下面的code中 "if((pic12=(word *)GlobalAlloc(GPTR,2*iXRes*iYRes))==NULL)
return 0;"
是多余的。每写完一幅图像后,用pic12 += iXRes*iYRes 将指针移到下一幅图像的写
入起始地址即可。
分配357M的内存不会有问题的。

【在 s********z 的大作中提到】
: 大家好,
: 我在想办法一些图像从camera写到内存,最后再存到硬盘里。
: 我刚开始学,很多地方不太懂,请大家帮帮忙。
: 我的思路大概就是,先申请存储一幅图像的内存(指针pic12),再申请存储所有1000幅
: 图像的内存(指针picAll). 然后让pic12指向picAll的起点。 接着开始采集图像,每采
: 集到一幅图像就用pic12写到picAll里面,然后pic12再向下移动一个frame. 采集完所
: 有图像以后,再全部用fwrite写到硬盘里。
: 关于指针,我不知道我用 pic12=(word *)GlobalAlloc(GPTR,2*iXRes*iYRes)) 分配内
: 存以后,再用pic12++的话,指针会不会移动一个frame(2*iXRes*iYRes bytes)?
: 另外,一次用 GlobalAlloc 申请357M的内存不知道会不会有问题, 我用的系统是XP

avatar
s*z
5
thanks a lot.
I successfully saved the images!

【在 z*y 的大作中提到】
: 你既然已经分配了一个大的内存(picAll),就没有必要再分配一幅图像的内存了。
: pic12++是不会移动一个frame的,而是一个WORD(如果pic12定义为WORD指针)。所以
: 你下面的code中 "if((pic12=(word *)GlobalAlloc(GPTR,2*iXRes*iYRes))==NULL)
: return 0;"
: 是多余的。每写完一幅图像后,用pic12 += iXRes*iYRes 将指针移到下一幅图像的写
: 入起始地址即可。
: 分配357M的内存不会有问题的。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。