Я новичок в этом, так что несите меня! ;)Освобождение выделенного пространства функцией вызываемого в сборке (att)
Я пытаюсь вернуть строку на ассемблере. У меня есть строка в стеке, которая правильно завершена.
затем I movl %esp
до %eax
и вернуть функцию. Моя мысль была вызвать из функции переменного тока и использовать эту функцию на ассемблере, как это:
extern char* getthestring (void);
int main()
{
char *m;
m=getthestring();
printf ("The string is %s", *m);
free (m);
return 0;
}
я получаю ошибки ошибки сегментации, и я не могу отладить ее, как GDB дает мне это:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00000001 in ??()
Может ли кто-нибудь помочь мне здесь?
Вы не должны возвращать указатель на локальную переменную. Кроме того, вы можете использовать 'free' для освобождения памяти, выделенной из кучи, используя' malloc' и друзей. – Jester
Да, я подозреваю, что это была проблема. Мне нужно решить задание и захотелось создать для него отдельную функцию. Поскольку я считаю, что выделение памяти кучи потребует другой функции, не написанной мной, что запрещено назначением, я думаю, мне придется написать все это на одной функции. – francisaugusto