窗口程序集名 | 保 留 | 保 留 | 备 注 | 整数数组 | | | | 变量名 | 类 型 | 数组 | 备 注 | m_pBuff | 整数型 | | m_buffLen | 整数型 | | m_length | 整数型 | | m_起始下标 | 整数型 | |
m_buffLen = 16 m_pBuff = 申请内存 (4 × m_buffLen, )释放内存 (m_pBuff )m_起始下标 = cs_起始下标 返回 (m_起始下标 )返回 (m_length )释放内存 (m_pBuff )m_buffLen = 16 m_pBuff = 申请内存 (4 × m_buffLen, )m_length = 0 cs_下标 = cs_下标 - m_起始下标 如果 (cs_下标 ≥ 0 且 cs_下标 < m_length )CopyMemory (取变量地址 (temp ), m_pBuff + 4 × cs_下标, 4 )调试输出 (“下标超出!”)暂停 ()结束 ()返回 (temp)cs_下标 = cs_下标 - m_起始下标 如果 (cs_下标 ≥ 0 且 cs_下标 < m_length )写到内存 (cs_值, m_pBuff + 4 × cs_下标, 4 )调试输出 (“下标超出!”)暂停 ()结束 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | pBuff | 整数型 | | | jb_指数 | 整数型 | | | 如果真 (m_buffLen < m_length + 1 )jb_指数 = 求自然对数 (m_buffLen ) ÷ 求自然对数 (2 ) + 1 m_buffLen = 求次方 (2, jb_指数 ) pBuff = 申请内存 (4 × m_buffLen, )CopyMemory (pBuff, m_pBuff, 4 × m_length )释放内存 (m_pBuff )m_pBuff = pBuff 写到内存 (值, m_pBuff + 4 × m_length, 4)m_length = m_length + 1 cs_下标 = cs_下标 - m_起始下标 如果 (cs_下标 ≥ 0 且 cs_下标 < m_length )MoveMemory (m_pBuff + 4 × cs_下标, m_pBuff + 4 (cs_下标 + 1 ), 4 (m_length - cs_下标 - 1 )) m_length = m_length - 1 调试输出 (“下标超出!”)暂停 ()结束 ()
加入成员这个,是优化了下算法,如果,现在申请的内存,能装下8个成员,还想添加,就申请能装下16个成员的内存,后面32,64,128,。。。,依次*2。
所以这里比易语言原生的快,是有依据的。这样也是最贴合实际的。后面用到的空间越大,申请的缓存空间也就越大。避免大量申请释放内存。
一次性加入的成员越多,我这份会快得越明显
至于删除为什么,可能因为易语言,删除后缩小了内存空间吧(不确定),我这份实现没有缩小,清除时才会缩小。
数组实现.e
(9.1 KB, 下载次数: 48)
|