【发布时间】:2017-01-23 10:32:07
【问题描述】:
我不太清楚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只能通过指针指定?
我真的不知道我在这里做什么
【问题讨论】:
-
@PaulMcKenzie 我正在学习麻省理工学院的 ocw 课程,ppt 示例使用了这个,但你的权利这似乎很愚蠢,感谢提供额外的信息
-
*(test + 1) = 6;写入越界 -
您所写的是未定义的行为。老实说,如果您不知道如何正确地将字符串分配给字符指针,那么您真的还没有准备好
malloc。 -
@DavidHoelzer 说实话,没有人准备好接受
malloc。
标签: c char malloc heap-memory