当前位置: 技术问答>linux和unix
一个关于GTK 申请内存的问题
来源: 互联网 发布时间:2016-01-29
本文导语: struck cc { int a; char c; }; cc *fun() { cc *a=new cc; return a; }//在C/C++里面 这里的返回值一定会报错的 //原因应该是 函数栈 不同 导致申请的地址空间在 下面的main()函数里面无法找到吧?? void main() { ...
struck cc
{
int a;
char c;
};
cc *fun()
{
cc *a=new cc;
return a;
}//在C/C++里面 这里的返回值一定会报错的
//原因应该是 函数栈 不同 导致申请的地址空间在 下面的main()函数里面无法找到吧??
void main()
{
cc *b;
b=fun();
}
//下面用GTK写的代码
GtkWidget *fun()
{
GtkWidget *button;
button=gtk_button_new();
gtk_widget_show(button);
return button;
}
int main(int argc,char *argv[])
{
GtkWidget *button;
button=fun();
...
return 0;
}
//这两个错误是不是一样的? 难道这个GTK不是犯了一样的错误吗? 但是为什么GCC貌似没有报错??
//小弟新手 望高人指点
{
int a;
char c;
};
cc *fun()
{
cc *a=new cc;
return a;
}//在C/C++里面 这里的返回值一定会报错的
//原因应该是 函数栈 不同 导致申请的地址空间在 下面的main()函数里面无法找到吧??
void main()
{
cc *b;
b=fun();
}
//下面用GTK写的代码
GtkWidget *fun()
{
GtkWidget *button;
button=gtk_button_new();
gtk_widget_show(button);
return button;
}
int main(int argc,char *argv[])
{
GtkWidget *button;
button=fun();
...
return 0;
}
//这两个错误是不是一样的? 难道这个GTK不是犯了一样的错误吗? 但是为什么GCC貌似没有报错??
//小弟新手 望高人指点
|
struct cc
{
int a;
char c;
};
cc *fun()
{
cc *a=new cc;
return a;
}
int main()
{
cc *p=fun();
p->a=12;
p->c='b';
printf("%d,%c",p->a,p->c);
return 0;
}
用DEV C++编译没有错误啊。
下面改为:
GtkWidget *fun()
{
GtkWidget *button;
button=gtk_button_new_with_label("OK");
gtk_widget_resize(button);
return button;
}
int main(int argc,char *argv[])
{
GtkWidget *button;
button=fun();
...
return 0;
}
{
int a;
char c;
};
cc *fun()
{
cc *a=new cc;
return a;
}
int main()
{
cc *p=fun();
p->a=12;
p->c='b';
printf("%d,%c",p->a,p->c);
return 0;
}
用DEV C++编译没有错误啊。
下面改为:
GtkWidget *fun()
{
GtkWidget *button;
button=gtk_button_new_with_label("OK");
gtk_widget_resize(button);
return button;
}
int main(int argc,char *argv[])
{
GtkWidget *button;
button=fun();
...
return 0;
}