C函数:重新定位静态数组或声明每个调用的新呼叫



我想知道,如果我想在函数中使用n个无符号字符元素的零始于零件的数组,那么最好的方法是什么。n是大约。600.

a)在每个函数调用中新声明数组:

unsigned char buffer[n] = {0};

b)声明为静态,但每个函数都会调用:

static unsigned char buffer[n] = {0};
memset (buffer, 0, n);

我希望在(a)中以(a)初始化的成本成本相同。但是,对于(a),我需要分配每个funktion调用的内存,并在离开功能时将其释放。这不会在(b)中发生,因为该数组被声明为静态。我对吗?

保持 static表示它在启动时对零估算化,这对您不好,因为无论如何您还是在运行时设置为零。如果在运行时执行系统特定的静态初始化,这意味着您获得了一个较慢的程序启动。

另外, static变量不是线程安全,这可能不是问题。

在堆栈分配情况下需要时间的时间不是分配,而是零分配。因此,如果您担心性能,最好的解决方案是完全不将其化为零,而是确保算法写入数组的每个字节。我不知道这里的算法,但是"我必须有一个尺寸600的所有零阵列"是一个奇怪的要求。

最新更新