所以我的理解是这两段代码是有效的并且做同样的事情。
1.)
char *ptr = malloc(5);
ptr = "hi";
2.)
char *ptr = "hi";
我想知道两者之间的区别,比如是否有任何优势。
最佳答案
前者是一个错误,永远不应该编写该代码。
它用字符串文字的地址覆盖 malloc()
返回的指针,丢弃原始指针并泄漏内存。
您必须使用 strcpy()
或其他一些内存复制方法来使用字符串初始化新分配的堆内存。
第二个只是将字符串文字的(运行时常量)地址分配给指针 ptr
,没有任何字符被复制到任何地方。
关于c - 首先将字符串指针分配给分配的内存和直接分配给字符串文字有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25607053/