Я не могу решить эту проблему. Когда я компилирую, компилятор выдает ошибку из-за свободных функций - PullRequest
0 голосов
/ 10 января 2011
#include <stdio.h>
#include <stdlib.h>


void copyint(char *i,char** temp);
int main()
{
    char* a="00313";
    char* temp;
    int inte;
    temp=(char*)malloc(sizeof(char));

    copyint(a,&temp);

    inte=atoi(temp);
    printf("%s\n",temp);
    system("PAUSE");
    free(temp);
}

void copyint(char *i,char** temp)
{
    *temp=i;
}

Ответы [ 4 ]

1 голос
/ 10 января 2011

Ваш код содержит ошибки.

temp = malloc(sizeof(char));

выделяет один байт для температуры.

copyint(a, &temp);

передает АДРЕС "temp".Затем "temp" перезаписывается, поэтому он больше не указывает на выделенную память.Следовательно, он не может быть освобожден.

Во-вторых, первым параметром для copyint является char, но вы передаете char *.Наконец, что на земле вы делаете с atoi()?

Я думаю, вам нужно выяснить, что на самом деле делает copyint().Что ты пытаешься делать?из

1 голос
/ 10 января 2011

не вопрос, поэтому укажите, что не так с первого взгляда: - copyint копирует один символ в указанную память.Итак, что делается: временное значение равно '0', случайное, случайное ....

'0', случайное случайное значение анализируется atoi - undefined, поскольку мы не знаем, что находится под этим указателем.а затем распечатывается ...

вместо strlen malloc strcpy используется последовательность

Редактировать: он не компилируется, поскольку вы передаете (char *) в функцию, которая принимает (char).(copyint(a,&temp);)

0 голосов
/ 10 января 2011

Даже если вопрос не так ясен, я считаю, что включение malloc.h решит проблему, по крайней мере, если вы используете компилятор VC.
HTH

0 голосов
/ 10 января 2011

Вы выделяете память на 1 символ, но копируете 4 байта для этого указателя в функции copyint.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...