#include <stdio.h>
#include <stdlib.h>
int main()
{
char *ptr = malloc(sizeof(char) * 1);
ptr = "Hello World";
puts(ptr);
getchar();
}
我不是 malloc() 专家,但由于我只分配了一个字节但将包含 11 个字节的值分配给 *ptr 指针,所以该代码不应该给出错误吗?
还是将 H 存储在我指定的位置,然后字符串的其余部分就放在它后面的位置?
最佳答案
您正在将指针“ptr”重新分配给另一个内存块,因此您不会看到任何错误。但是,您分配的内存块(大小为 1)“丢失”并导致内存泄漏。
关于c - 为什么我可以将更长的字符串分配给 C 中的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16072431/