错误、漏洞、问题 - 页 2468

 
Alexey Navoykov:

前段时间他们在这个主题中给出的伪代码,找找看。 据我记得,只有当数组大小超过这个容量时,那里的容量才会增加。 当然,有些东西可能已经改变。

而获得saracity值的功能确实非常必要。

谢谢你的信息,到目前为止,我发现fxsaber是如何寻找同样的东西的))。

关于交易、自动交易系统和策略测试的论坛

虫子,虫子,问题

fxsaber, 2018.04.13 10:04

帮助找到发布ArrayResize源代码的开发者帖子。在网上搜索 "site:mql5.com/en/forum ArrayResize+reserve "也没有帮助。

我记得有一个源代码。在其中,你可以立即看到储备参数的实施逻辑。

我在谷歌上搜索,我在论坛上搜索,我在主要开发者的资料中搜索......
除了可以在ArrayResize中使用值为-1的reserve_size来清除先前分配的内存外,我没有发现任何东西。
 
Sergey Dzyublik:

谢谢你的信息,到目前为止,我发现fxsaber是如何寻找同样的东西的 ))

我也没有找到)。

我想@Slava 写过这个问题。

 

关于交易、自动交易系统和交易策略测试的论坛

虫子,虫子,问题

伊利亚斯, 2016.08.24 11:08

数组("里面")存储分配的--在数组 的多少个元素 下分配。

与分配的工作逻辑(条件代码)。
ArrayResize(arr,int size,int reserve)
  {
   if(arr.allocated<size)
      if(!ArrayAllocateMemory(arr,size+reserve))  // -> arr.allocated=size+reserve;
         return(-1);
   //---
   CallConstructorsOrDestructors(arr,size);
   //---
   arr.size=size;
   return(size);
  }

 
Alexey Navoykov:

谢谢你的帮助。
不幸的是,这段代码并没有为手头的问题 提供任何答案。

 
class A{
   uchar data;
};
 
template<typename T>
class B{
public:
   T data;
};

template<typename T>
class C {
public:
   uchar data;
};


void OnStart(){
   A a;
   B<A> b;
   C<A> c;
   
   a = (A)(a);
   b = (B<A>)(b);    //'(' - invalid cast operation
   c = (C<A>)(c);    //code generation error            
}
事实证明,并非所有的数据类型 都能 "本身 "执行类型转换...
模板类在编译时断裂,但结构是可以的。
 
你可以用肮脏的钩子拉出储备,用手柄检查调整大小的行为。
 
TheXpert:
你可以用dirty hooks获得储备,用手柄检查调整大小的行为

据推测,在数组对象的内存中,保留尺寸下的变量就在尺寸下的变量旁边。
但目前有十项比调试或挖掘MT的内存更紧迫的任务,研究ArrayResize 对数组对象的保留大小字段的影响。

 
Sergey Dzyublik:
#import "msvcrt.dll"
  long memcpy(int &dst[], long &src, int cnt);
#import

struct ArrayStore
{
   long offset;
   double x[];
   
   int capacity() 
   {
      int ints[sizeof(ArrayStore) / sizeof(int)];
      memcpy(ints, this.offset, sizeof(ArrayStore));
      return ints[8];
   }
};

void OnStart()
{
   ArrayStore store;
   ArrayResize(store.x, 17, 8755);
   Print("all reserved size = ", store.capacity()); // 8772
}
 
Sergey Dzyublik:
事实证明,并非所有的数据类型 都能 "本身 "执行类型转换...
模板类在编译时断裂,但结构是可以的。

谢谢你的留言。

这是一个粗制滥造的问题,我们会解决的。

 
TheXpert:

谢谢,没有想到WinApi对进程内存的访问。

P.s. 个人留言已关闭,所以我在这里写。
"在逆向工程中,术语钩子有一个特定的含义--拦截调用一个函数或事件的代码。"