动态分配字符串数组的问题

时间:2012-07-09 09:12:38

标签: c arrays dynamic-allocation

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

1 个答案:

答案 0 :(得分:4)

  

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

这不是数组,而是指针。在此上下文中,运算符sizeof产生指针的大小,而不是您分配的数量。

因此,您可以尝试

而不是那些sizeof内容
qsort(frags2, numberOfFrags, sizeof(char*), cstring_cmp);