0

我正在尝试动态分配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);  
4

1 回答 1

4

新数组上的 Sizeof 返回 0 而不是我认为的 malloc'd

它不是一个数组,它是一个指针。在这种情况下,运算符sizeof产生指针的大小,而不是您分配的数量。

所以代替那些sizeof东西,你可以试试

qsort(frags2, numberOfFrags, sizeof(char*), cstring_cmp);   
于 2012-07-09T09:14:27.190 回答