Realloc出错

时间:2018-04-16 17:25:46

标签: c realloc

我有3个数据字段,用“,”分隔。我使用wcstok来分隔它们 b是一个双指针,当wcstok创建一个新元素时会重新分配。 当使用realloc b与第一个元素“我是一名大学生”时,它正常工作。但当pc指向第二个元素“我住在加拿大”。 b无法重新分配。

int n = 0;
wchar_t a[] = L"I am a college student, I live in Canada, I love ice cream";
wchar_t** b = NULL;
wchar_t** temp2 = NULL;

wchar_t* pc = wcstok(a, L",");

while (pc)
{
    n++;
    temp2 = (wchar_t**)realloc(b, n * sizeof(wchar_t*));

    if (!temp2)
    {
        for (int k = 0; k < n; k++)
        {
            free(b[k]);
            b[k] = NULL;
        }
        free(*b);
        *b = NULL;
    }

    b = temp2;

    b[n - 1] = (wchar_t*)malloc(((wcslen(pc)+1) * sizeof(wchar_t)));
    wcsncpy(b[n-1], pc, 1000);
    b[n - 1][wcslen(pc)] = '\0';

    pc = wcstok(NULL, L",");
}

0 个答案:

没有答案