Замените все вызовы malloc() в С++ программах, написанных в стиле языка С, на операции new. Подсказка параграф B.4[8-9].
Щас попытаемся разобрать. malloc() возвращает указатель на тип void в С++ нету неявного преобразования от типа void* к любому другому типу, поэтому при выделении памяти функциями malloc() нужно явно приводить указатель void* к нужному типу.
1 2 3 4 5 6 7 |
int main() { //int* p=malloc(sizeof(int)*4);//ошибка int* p=(int*)malloc(sizeof(int)*4);//все правильно return 0; } |
А можно и на new заменить например так:
1 2 3 4 5 |
//в языке С int* p=malloc(sizeof(int)*4);//все правильно //эквивалентно в С++ int* p=new int[4]; |
Там еще нужно рассмотреть вариант замены relloc() там что то с вектором связано, но мы пока это отложим, когда понадобится, тогда и рассмотрим.
[youtube]https://www.youtube.com/watch?v=Kvmi2H4QJlA[/youtube]