【发布时间】:2015-10-28 18:40:47
【问题描述】:
我写了以下代码:
[all the required initialization]
printf("longueur de mid: %d\n",mid);
printf("longueur de n-mid: %d\n",n - mid);
L = (char*) malloc((mid)*sizeof(char));
R = (char*) malloc((n - mid)*sizeof(char));
printf("longueur de L: %d\n",strlen(L));
printf("longueur de R: %d\n",strlen(R));
[data treatment and free()]
使用printf 我得到了这个结果:
longueur de mid: 2
longueur de n-mid: 2
longueur de L: 3
longueur de R: 3
为什么输出不同?
【问题讨论】:
-
您想了解 C-“字符串”到底是什么,因为 C 中没有数据类型“字符串”。
-
如果你用
null-characters(零)初始化,你会看到区别。即L = calloc(mid, sizeof(char));和R = calloc((n - mid), sizeof(char));(注意:为了存储mid的字符串,你必须分配mid + 1为空终止字符提供空间) -
你已经分配了内存,但是你什么也没放。所以它的内容是随机的,并且可能有任何字符串长度。