与在所有情况下使用相同的typedef字符串相比,在C中指定不同的typedef字符串长度会减少内存使用吗?

问题描述 投票:0回答:2

例如,如果我有使用C或C ++编写的代码,我使用typedef来创建不同类型的字符串,如下所示:

typedef char shortString[20];
typedef char longString[50];
typedef char veryLongString[100];

这样做实际上会比我只为所有这样的字符串变量使用一个typedef字符串占用更少的内存吗?

typedef char string[100];
c++ c char typedef c-strings
2个回答
0
投票

是。 typedef只是类型的别名。因此,这等效于“为变量使用50个字符的数组比使用100个字符的数组占用更少的内存吗?”

请注意,如果为字符串使用多个数组长度,通过确保在使用它们时始终使用正确的长度来避免缓冲区溢出可能会很复杂。


0
投票

A typedef不会影响程序的内存。它是一个编译工具。

您可以使用常量代替数组大小:

const unsigned int COMMON_BUFFER_LENGTH = 64U;
char my_text_buffer[COMMON_BUFFER_LENGTH];

更简单的方法是使用std::stringstd::string类型为您管理内存,不需要终止nul字符。

© www.soinside.com 2019 - 2024. All rights reserved.