2014-12-04 2 views
-2

Ребят я програмирование на С, пытаясь сделать динамическое выделение типа полукокса, как это:Malloc возвращение Пустоты в C

char **word1 = malloc(sizeof(char *)* 1); 
char **word2 = malloc(sizeof(char *) * 1); 

Но это в результате к ERRO вроде: недопустимое преобразование из «недействительных * 'to' char ** '[-fpermissive]

Спасибо всем, кто мне помогает.

+0

malloc возвращает 'void *' вам нужно наложить на 'char *' поместить символ '(char *)' после знака равенства. –

+2

Тогда вы скорее всего не компилируете код C, а код на C++. И если вы программируете C++, вам не следует использовать 'malloc' /' free', ведь в эти дни вам вряд ли придется использовать указатели вообще на C++. –

+0

выглядит как ошибка компилятора C++. – sgarizvi

ответ

4

В компиляторе c [gcc] эта ошибка не отображается.

В компиляторе c++, [g++], эта ошибка может произойти.

Чтобы избавиться от этого, либо

  1. Используйте c компилятор для компиляции кода выше.
  2. Используйте компилятор c++ и добавьте char ** литье в malloc() значение возврата.

Примечание: ИМО, идите на 1-й пункт. Это не очень хорошая практика neither to use malloc() family in c++, а не casting the return от malloc().

6

Усвоенное предположение: вы используете компилятор C++. C не требует никаких отливок от void* к другим типам указателей, но C++ делает.

Рассмотрите возможность использования компилятора C или внесение значения, возвращаемого malloc.

+2

«Рассмотрите либо использование компилятора C, либо значение, возвращаемое malloc». * но не оба !! * – Roddy

+4

Вот что 'либо' должен подчеркнуть, Родди. –

Смежные вопросы