Assembly 在程序集中调用方(att)上释放被调用方函数分配的空间

Assembly 在程序集中调用方(att)上释放被调用方函数分配的空间,assembly,att,Assembly,Att,这方面我是新手,所以请容忍我!;) 我试图在汇编程序上返回一个字符串。我在堆栈上有字符串,正确终止 然后我将%esp移动到%eax并返回该函数。 我的想法是从c函数调用它,然后像这样使用这个汇编函数: extern char* getthestring (void); int main () { char *m; m=getthestring(); printf ("The string is %s", *m); free (m); return 0; } 我得到了分段错误,我无法调试它,因

这方面我是新手,所以请容忍我!;)

我试图在汇编程序上返回一个字符串。我在堆栈上有字符串,正确终止

然后我将%esp移动到
%eax
并返回该函数。 我的想法是从c函数调用它,然后像这样使用这个汇编函数:

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 ?? ()

有人能帮我吗

正如@jester所指出的,我试图返回局部变量,这是不可能的。

您不应该返回指向局部变量的指针。另外,您只能使用
free
来释放使用
malloc
和friends从堆中分配的内存。是的,我怀疑这就是问题所在。我需要解决一个赋值问题,并想为此创建一个单独的函数。因为我相信分配堆内存需要另一个不是我写的函数——这是赋值所禁止的——我想我必须在一个函数上写下所有的函数。