找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1260|回复: 12

下面的指针代码怎么写?

[复制链接]
发表于 2020-5-20 16:14:45 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
int i;
LPVOID lpMapStartPos;

lpMapStartPos=0      i=1
lpMapStartPos=1024   i=2
lpMapStartPos=2048   i=3
lpMapStartPos=3072   i=4

i=1, 指针指向lpMapStartPos的0
CopyMemory(lpNewFilePos,lpMapStartPos,FileLen);

i=2, 指针指向lpMapStartPos的1024位置
i=3, 指针指向lpMapStartPos的2048位置
i=3, 指针指向lpMapStartPos的3072位置


是否可以在这个api里面CopyMemory(lpNewFilePos,lpMapStartPos,FileLen);
一行代码完成?
回复

使用道具 举报

发表于 2020-5-21 04:43:37 | 显示全部楼层
lpNewFilePos和FileLen呢?
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2020-5-21 06:04:51 | 显示全部楼层
本帖最后由 chaw899 于 2020-5-21 06:07 编辑
0xAA55 发表于 2020-5-21 04:43
lpNewFilePos和FileLen呢?


lpNewFilePos是LPVOID类型和FileLen是整型。

还有你的flac播放器有点小问题,当flac存在误
码的情况,会异常退出,而不是忽略错误继续播放。
回复 赞! 靠!

使用道具 举报

发表于 2020-5-21 13:25:45 | 显示全部楼层
看不太懂想表达的意思....没有前后文指针类型也不清楚,作用和目的难以判断

是想要根据输入的i来决定输出的指针地址么
如果是的话,那可以做个指针数组映射,xxx *ptr[] = {xxx1,xxx2,xxx3,xxx4}
ptr[i] == xxx1这样

如果仅仅是为了美观尝试压缩多行代码为一行那大可不必
先把轮子整出来车子能跑了再考虑轮子圆不圆比较好
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2020-5-21 13:31:52 | 显示全部楼层
谢谢你告诉我造轮子的方法。
回复 赞! 靠!

使用道具 举报

发表于 2020-5-22 03:41:47 | 显示全部楼层
chaw899 发表于 2020-5-21 06:04
lpNewFilePos是LPVOID类型和FileLen是整型。

还有你的flac播放器有点小问题,当flac存在误


我重新问一遍:

lpNewFilePos和FileLen呢?

你要重复把4个不同的数据覆盖写入到同一个指针,并且长度也是同一个长度?在没有保证多线程安全的情况下,你这么做有什么意义?

此外,FLAC存在误码的时候,为什么还要继续播放?折磨用户的耳朵吗?
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2020-5-22 22:51:15 | 显示全部楼层
0xAA55 发表于 2020-5-22 03:41
我重新问一遍:

lpNewFilePos和FileLen呢?

对于第一个问题,是不是可以加上临界区或者信号量来协调工作?
第二个问题,我也是碰巧遇到的。我下的flac正好是有误码的。
然后就用你的播放器实验,结果退出了。

flac的少量误码是影响不会很大,因为flac是默认的分块是4k,进行预测编码的。
如果存在一个4k数据损坏,解码就是坏了4k的数据,其余解码是正确无误的。
flac和ape的优势之一就是它的容错性吧。
这是我对flac编码的理解。

我就是因为搜索flac编码找到这个坛子的,我们也算有缘分吧。
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2020-5-22 22:52:42 | 显示全部楼层
0xAA55 发表于 2020-5-22 03:41
我重新问一遍:

lpNewFilePos和FileLen呢?

坛主你javascript熟悉吗?我遇到了点问题,可以发上来吗?
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2020-5-22 23:20:26 | 显示全部楼层
0xAA55 发表于 2020-5-22 03:41
我重新问一遍:

lpNewFilePos和FileLen呢?

需要传送的数据的大小是15G,考虑到内存的因素,分段传送。
这些数据都是给机器学习用的。
回复 赞! 靠!

使用道具 举报

发表于 2020-5-23 15:45:08 | 显示全部楼层
本帖最后由 Ayala 于 2020-5-23 16:06 编辑

同机内存拷贝15g的数据 还是从文件拷贝到内存 还是从网络拷贝到内存
lpNewFilePos是否是连续的还是指针的数组
lpMapStartPos指像的内存是连续的还是指针的数组
根据你提供的信息代码可以这么写 LPVOID的指向并不明确 所以这么些并不一定正确

  1.         for (i = 0; i < FileLen / 1024 ; i++)
  2.         {
  3.                 CopyMemory( (char*) lpNewFilePos + i * 1024 ,
  4.                                         (char*) lpMapStartPos + i * 1024 ,
  5.                                         1024
  6.                                         );
  7.         }
复制代码
回复 赞! 靠!

使用道具 举报

发表于 2020-5-23 16:10:40 | 显示全部楼层
0xAA55 发表于 2020-5-22 03:41
我重新问一遍:

lpNewFilePos和FileLen呢?

出现误码块提示 然后跳过比较好
回复 赞! 靠!

使用道具 举报

发表于 2020-5-23 18:08:32 | 显示全部楼层
Ayala 发表于 2020-5-23 15:45
同机内存拷贝15g的数据 还是从文件拷贝到内存 还是从网络拷贝到内存
lpNewFilePos是否是连续的还是指针的数 ...

你竟然回答了他的一个不明所以的问题
回复 赞! 靠!

使用道具 举报

发表于 2020-5-23 21:20:51 | 显示全部楼层
0xAA55 发表于 2020-5-23 18:08
你竟然回答了他的一个不明所以的问题

闲的
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-21 17:43 , Processed in 0.035537 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表