下面两个片段有什么区别吗? 一个是字符数组,而另一个是字符数组指针,但它们的行为确实相同,不是吗?
示例 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/