我不太确定我是否了解 malloc
到底是如何工作的。
#include <stdio.h>
#include <stdlib.h>
int main() {
char * string = (char*) malloc(sizeof(char));
string = "abc";
int * test = (int*) malloc(1 * sizeof(int));
*(test) = 5;
*(test + 1) = 6;
}
我预计这会输出一个错误,因为我指定给字符串的值大于一个字符,但它似乎编译得很好。
我有几个问题:
“字符串”现在保存在哪里?它在堆上我分配的一个空间之后的内存空间上吗?
为什么 char 让我直接指定而 int 只能通过指针指定?
我真的不知道我在这里做什么
最佳答案
这段代码
string = "abc";
将字符串常量“abc”
的地址分配给string
变量,该变量是一个char *
。从 malloc()
调用返回的内存地址(位于 string
中)被覆盖并丢失。
关于c - C 中的 malloc 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41804186/