C语言编程:内存分配、数据结构与输入输出详解
1. 内存分配与字符串复制
在C语言编程中,内存分配是一个重要的操作。通常,为了满足对齐要求,我们可以让分配器始终返回满足所有对齐限制的指针,不过这可能会造成一些空间的浪费。之前提到的 alloc
函数不能保证特定的对齐,因此我们会使用标准库函数 malloc
,它能满足对齐要求。
下面是使用 malloc
实现 talloc
函数的代码:
#include <stdlib.h>
/* talloc: make a tnode */
struct tnode *talloc(void)
{
return (struct tnode *) malloc(sizeof(struct tnode));
}
strdup
函数的作用是将传入的字符串复制到一个安全的地方,这个地方是通过调用 malloc
获得的:
char *strdup(char *s) /* make a duplicate of s */
{
char *p;
p = (char *) malloc(strlen(s)+1); /* +1 for '\0' */
if (p != NULL)
strcpy(p, s);
return p;
}
<