【发布时间】:2020-09-30 09:38:04
【问题描述】:
我想编写一个简单的程序,我希望它无法理解 strcpy 和正确的内存管理,但它仍然可以执行。我正在尝试为一个字符串动态分配内存(使用 malloc),足以仅将 3 个(或任何少于源的)字符用作目标,并分配比源的字符串数组更少的内存(或字符)是在堆栈上分配(10 个字符的字符串)。无论我如何定义内存分配,它都会复制和打印内容。这里有什么错误?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *ch = NULL;
char name[10] = "something";
ch = (char*)malloc(3 * sizeof(char));
strcpy(ch, name);
printf("%s\n", name);
free(ch);
ch = NULL;
}
【问题讨论】:
-
“我希望它无法理解 strcpy 和正确的内存管理,但它仍然执行”嗯...?