【发布时间】:2012-02-26 21:45:13
【问题描述】:
我无法理解 realloc 的工作原理。如果我 malloc'ed 一个缓冲区并将数据复制到该缓冲区,假设是“AB”:
+------------+
| A | B | \0 |
+------------+
然后我重新分配了缓冲区,数据中是否会丢失任何内容(甚至是单个字节)?或者它只是扩展缓冲区? :
+------------------------+
| A | B | \0 | ? | ? | ? |
+------------------------+
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
char* buffer = (char*) malloc( sizeof(char) * 3 );
strncpy(buffer, "AB", 2);
buffer = (char*) realloc(buffer, sizeof(char) * 6); /* Will there be any lost here? */
free(buffer);
return(0);
}
【问题讨论】:
标签: c memory-management realloc