我正在尝试动态分配大小为frags2
的数组numberOfFrags
,并将原始数组的内容复制到其中。我尝试了很多方法和搜索,但不明白这里出了什么问题。新数组上的sizeof
会返回0
,而不是我认为的malloc
'。
非常感谢任何帮助!
int main(int argc, const char* argv[]) {
char* frags[MAX_FRAG_COUNT];
FILE* fp = fopen(argv[1], "r");
int numberOfFrags = ReadAllFragments(fp, frags, MAX_FRAG_COUNT);
fclose(fp);
char** frags2 = (char**)malloc(numberOfFrags * sizeof(char*));
for (int i = 0; i < numberOfFrags; i++) {
frags2[i] = frags[i];
}
qsort(frags2, sizeof(frags2) / sizeof(char *), sizeof(char*), cstring_cmp);
答案 0 :(得分:4)
新数组上的Sizeof返回0而不是我认为的malloc
这不是数组,而是指针。在此上下文中,运算符sizeof
产生指针的大小,而不是您分配的数量。
因此,您可以尝试
而不是那些sizeof
内容
qsort(frags2, numberOfFrags, sizeof(char*), cstring_cmp);