Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 对VeriFone库的内存可用调用_C_Memory Management_Out Of Memory_Posix_Verifone - Fatal编程技术网

C 对VeriFone库的内存可用调用

C 对VeriFone库的内存可用调用,c,memory-management,out-of-memory,posix,verifone,C,Memory Management,Out Of Memory,Posix,Verifone,在Evo范围的svc_swi.h中,有没有开发人员发现对VeriFone库函数的内存调用结果不一致? 对于Verix/VerixV,我们有一些看起来不错的旧代码。但对于较新的单元(这些单元的内存比先前的硬件大得多),我们的监控中显示了这些结果:- 总内存:65536k总闪存:131072k可用 内存:114654k可用闪存:114650k 自从我们将Evo添加到稳定的数据库中以来,获取这些统计信息的代码没有改变 long GetFileSysAvail(const char *drive) co

在Evo范围的svc_swi.h中,有没有开发人员发现对VeriFone库函数的内存调用结果不一致?
对于Verix/VerixV,我们有一些看起来不错的旧代码。但对于较新的单元(这些单元的内存比先前的硬件大得多),我们的监控中显示了这些结果:-

总内存:65536k总闪存:131072k可用 内存:114654k可用闪存:114650k

自从我们将Evo添加到稳定的数据库中以来,获取这些统计信息的代码没有改变

long GetFileSysAvail(const char *drive) const
{
    fs_size fs;

    fs.Avail = 0;
#ifdef __arm
    (void)dir_get_sizes(drive, &fs);
#else
    dir_get_sizes((char *)drive, &fs);
#endif

    return fs.Avail;
}

我不确定,但我冒昧猜测一下——在Verix和VerixV终端(如3740/3750和510/570)中,都有闪存RAM,您通过在文件名前指示
I:
F:
来指定要哪个“驱动器”。在520(我怀疑还有其他eVo终端,但我不确定)中没有(非易失性)RAM,因此即使您指定
I:
,您仍在存储到闪存中

如果您查看
dir\u get\u size
的文档,您会注意到
Verix V
版本中写入的内容与
eVo
版本中写入的内容不同。对我来说真正突出的主要区别是:

I:和F:都在Nand闪存上,即 生成的结构fs_大小表示可用NAND的总数(I:+F:) 调用该功能时的闪存

这很好,可以解释为什么“Available”比“Total”高,特别是因为您使用不同的API来获取总大小(我假设SVC_RAM_大小和SVC_FLASH_大小),这可能会在
I:
F:
之间产生某种区别。如果是这种情况,则意味着您正在使用大约81954k的可用存储空间。。。除了一个烦人的问题:“可用RAM”比“可用闪存”高4k,我们希望它们是相同的。除非您在调用之间分配和/或存储大量其他内容,否则我无法解释


另一个显著的区别是,虽然两者都返回一个
int
,但Verix V版本仅指示失败时返回-1(暗示,但不明确表示成功时返回0),errno设置为
enoint
EACCES
。另一方面,eVo版本声明返回值是“以字节为单位的可用内存”。将从
dir\u get\u size
返回的值与
fs.Avail

中设置的值进行比较可能会很有趣,让我们了解您的发现--我很想知道,我自己…感谢@PhatWrat提供的有用反馈。是的,你是对的,我们确实使用SVC\u RAM\u大小。因此,如果我进展顺利,我会修补一下,让你知道。嗨@PhatWrat,我运行了一个内存报告进行比较,从系统模式菜单选项4>内存使用情况。结果与你对Evo单元中RAM和闪存的上述评论一致。所以libapi调用报告的RAM必须通过与附加内存报告使用的调用不同的调用来收集?