【发布时间】:2015-08-17 06:28:46
【问题描述】:
我有fullNames,这是一个对其中的全名进行排序的二维数组,我想将其内容复制到sortedNames,这是一个存在于该函数之外的二维数组。 (我得到***sortedNames 作为参数)。
我动态分配了这个数组,但是复制没有成功。程序在第四次尝试将名称从fullNames 复制到sortedNames 后崩溃。为什么?
stringcpy 和 stringlen 是我创建的函数。他们和strcpy 和strlen 做的事情一样。
/*allocating memory for sortedNames*/
*sortedNames = (char**) malloc(n);/*n is the number of names*/
/*allocating memory for each sortedNames array*/
for (i = 0; i < n; i++)
{
(*sortedNames)[i] = (char*) malloc(stringlen(fullNames[i])+1);
}
/*Copying fullNames into sortedNames*/
for (i = 0; i < n; i++)
{
stringcpy((*sortedNames)[i],fullNames[i]);
}
【问题讨论】:
-
是n个名字还是要分配的总大小>
-
您应该修改您的问题以包含函数原型。是
void myfunction(char ***sortedNames, const char **fullNames, size_t n)?
标签: c pointers multidimensional-array crash copy