以下两个片段之间有什么区别吗?一个是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);
Run Code Online (Sandbox Code Playgroud)
例2:
char transport_layer_header[2];
sprintf(transport_layer_header,"%d%d",1,2);
Run Code Online (Sandbox Code Playgroud)
Jam*_*lis 11
是,有一点不同.在第一个示例中,您在堆上动态分配两元素char数组.在第二个示例中,堆栈上有一个本地双元素char数组.
在第一个示例中,由于您没有free
返回指针malloc
,因此也存在内存泄漏.
它们通常可以以相同的方式使用,例如sprintf
在演示时使用,但它们在根本上是不同的.