c++ - 字符数组问题C++

标签 c++ arrays char

下面两个片段有什么区别吗? 一个是字符数组,而另一个是字符数组指针,但它们的行为确实相同,不是吗?

示例 1:

char * transport_layer_header;
// Memory allocation for char * - allocate memory for a 2 character string
char * transport_layer_header = (char *)malloc(2 * sizeof(char));
sprintf(transport_layer_header,"%d%d",1,2);

示例 2:

char transport_layer_header[2];
sprintf(transport_layer_header,"%d%d",1,2);

最佳答案

是的,有区别。在第一个示例中,您在堆上动态分配了一个二元素 char 数组。在第二个示例中,堆栈上有一个本地双元素 char 数组。

在第一个示例中,由于您没有释放 malloc 返回的指针,因此您也有内存泄漏。

它们通常可以以相同的方式使用,例如使用您演示的 sprintf,但它们在本质上是根本不同的。

关于c++ - 字符数组问题C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1834769/

相关文章:

c++ - 崩溃删除 [ ] 初始化的 char 字符串

c++ - 如何更改参数包中的最后一个参数?

c++ - 帮助阵列

python - Python 中 ND 数组的“删除”命令

c++ - 无法解析 cc1plus : error: unrecognized command line option "-std=c++11"

javascript - 使用多个过滤器数组过滤一个数组

java - Java 中的 JSON 数组

c++ - 奇怪的 C++ 内存分配

javascript - 创建带有与电影同步的标记的 JavaScript 图表

c - 在 C 中将字符写入管道