如果在编译时知道x,我应该使用T foo [X]而不是T * foo吗?

时间:2014-05-05 02:21:29

标签: c++ arrays malloc

假设:

struct A
{
    char *a;
        char *b;
}

如果我在编译时知道ab的大小是值得的,如果我使用固定数组大小而不是或者它什么都不改变?它会节省很多malloc调用,其中大部分是循环播放的,我觉得它最快。

struct A
{
    char a[256];
    char b[32];
};

1 个答案:

答案 0 :(得分:4)

如果您可以使用您想要的第二个选项执行所有操作,那么这是一个更好的选择。除非必要,否则应避免动态内存分配。有一些理由可以选择第一个选项。显而易见的是,你可能有一个可变的大小,但你已经表明情况并非如此。以下是其他一些原因:

  1. 您可能希望重新分配ab,这可以通过指针完成,但不能使用数组。
  2. 您可能希望能够有效移动 A个对象。