Char*在函数中使用malloc创建,编译器表示地址在堆栈上,无法返回。
在C语言中,char是指向字符的指针类型,malloc函数用于在堆上动态分配内存空间。当我们在函数中使用malloc创建char时,编译器会将分配的内存空间地址存储在堆栈上的指针变量中。
堆栈是程序运行时用于管理函数调用和局部变量的一种数据结构。堆栈上的内存空间是有限的,并且在函数调用结束后会自动释放。因此,如果我们尝试将在堆上分配的内存地址直接返回给调用函数,那么在函数调用结束后,该内存空间将被释放,返回的地址将变得无效。
为了解决这个问题,我们可以使用指针参数或者全局变量来传递在堆上分配的内存地址。通过将指针参数传递给函数,我们可以在函数内部修改指针指向的内存内容,而不需要返回地址。另外,全局变量在函数调用结束后仍然保持有效,可以在其他函数中访问和使用。
总结起来,当我们在函数中使用malloc创建char*时,编译器表示地址在堆栈上,无法直接返回。我们可以通过指针参数或者全局变量来传递在堆上分配的内存地址,以便在函数调用结束后仍然可以访问和使用该内存空间。