music 发表于 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);
一行代码完成?

0xAA55 发表于 2020-5-21 04:43:37

lpNewFilePos和FileLen呢?

music 发表于 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存在误
码的情况,会异常退出,而不是忽略错误继续播放。

Mr_doge 发表于 2020-5-21 13:25:45

看不太懂想表达的意思....没有前后文指针类型也不清楚,作用和目的难以判断

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

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

music 发表于 2020-5-21 13:31:52

谢谢你告诉我造轮子的方法。

0xAA55 发表于 2020-5-22 03:41:47

chaw899 发表于 2020-5-21 06:04
lpNewFilePos是LPVOID类型和FileLen是整型。

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


我重新问一遍:

lpNewFilePos和FileLen呢?

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

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

music 发表于 2020-5-22 22:51:15

0xAA55 发表于 2020-5-22 03:41
我重新问一遍:

lpNewFilePos和FileLen呢?


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

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

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

music 发表于 2020-5-22 22:52:42

0xAA55 发表于 2020-5-22 03:41
我重新问一遍:

lpNewFilePos和FileLen呢?


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

music 发表于 2020-5-22 23:20:26

0xAA55 发表于 2020-5-22 03:41
我重新问一遍:

lpNewFilePos和FileLen呢?


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

Ayala 发表于 2020-5-23 15:45:08

本帖最后由 Ayala 于 2020-5-23 16:06 编辑

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

        for (i = 0; i < FileLen / 1024 ; i++)
        {
                CopyMemory( (char*) lpNewFilePos + i * 1024 ,
                                        (char*) lpMapStartPos + i * 1024 ,
                                        1024
                                        );
        }

Ayala 发表于 2020-5-23 16:10:40

0xAA55 发表于 2020-5-22 03:41
我重新问一遍:

lpNewFilePos和FileLen呢?


出现误码块提示 然后跳过比较好

0xAA55 发表于 2020-5-23 18:08:32

Ayala 发表于 2020-5-23 15:45
同机内存拷贝15g的数据 还是从文件拷贝到内存 还是从网络拷贝到内存
lpNewFilePos是否是连续的还是指针的数 ...

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

Ayala 发表于 2020-5-23 21:20:51

0xAA55 发表于 2020-5-23 18:08
你竟然回答了他的一个不明所以的问题

闲的
页: [1]
查看完整版本: 下面的指针代码怎么写?