相关疑难解决方法(0)

C++ STL:Array vs Vector:原始元素访问性能

我正在建立一个翻译,因为这次我的目标是原始速度,所以在这个(原始)情况下,每个时钟周期对我都很重要.

您是否有任何经验或信息两者更快:Vector或Array?重要的是我可以访问元素的速度(操作码接收),我不关心插入,分配,排序等.

我现在要把自己从窗户里拉出来说:

  • 在访问元素i方面,数组至少比向量快一点.

这对我来说似乎很合乎逻辑.使用向量,您可以获得阵列不存在的所有安全性和控制开销.

(为什么)我错了?

不,我不能忽视性能差异 - 即使它是如此之小 - 我已经优化并最小化执行操作码的VM的每个其他部分:)

c++ arrays stl vector

27
推荐指数
2
解决办法
2万
查看次数

什么是内存泄漏?

显然,维基百科有关于该主题的大量信息,但我想确保我理解.从我可以告诉它的重要性来理解堆栈/堆关系真正了解内存泄漏?

所以这就是我(我想)的理解.更正是非常受欢迎的!

首次启动程序时,会分配一块内存,例如0x000到0xFFF.第一部分(比如0x000到0x011)是加载程序代码的代码/文本段.

+--------------+ 0x011
| Program Code |
+--------------+ 0x000
Run Code Online (Sandbox Code Playgroud)

然后你有堆栈(比如0x012到0x7ff)保存局部变量,它们被存储/检索FIFO.所以,如果你有类似的东西

char middleLetter(string word){
     int len = word.length();
     return word[len/2];
}

int main(){
   int cool_number;
   char letter;
   letter = middleLetter("Words");
   ...
Run Code Online (Sandbox Code Playgroud)

然后你的变量将被分配在堆栈上,如下所示:

+-------------+ 0x7ff
|             |
|             |
|             |
| ...         |
| len         |
| letter      |
| cool_number |
+-------------+ 0x012
Run Code Online (Sandbox Code Playgroud)

当然,如果你在某处(使用mallocnew)分配内存,但从不释放它,那么你的堆可能看起来像这样,你现在有内存泄漏:

+-------------+ 0xfff
|             |
| malloc(20)  | 0xf64
| malloc(50)  | 0xf32
| malloc(50)  | 0xf00
| ... …
Run Code Online (Sandbox Code Playgroud)

memory-leaks

25
推荐指数
3
解决办法
7937
查看次数

标签 统计

arrays ×1

c++ ×1

memory-leaks ×1

stl ×1

vector ×1