一个关于GTK 申请内存的问题

xxgamexx 2007-06-21 01:04:06
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貌似没有报错??
//小弟新手 望高人指点
...全文
186 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxgamexx 2007-06-23
  • 打赏
  • 举报
回复
对了 还要加个 delete p;
xxgamexx 2007-06-23
  • 打赏
  • 举报
回复
另外 在STACK申请的内存会在函数执行结束时释放 但是上面的BUTTON 或者上面的结构对象p并没有释放掉内存吧?????????????


xxgamexx 2007-06-23
  • 打赏
  • 举报
回复
恩 需要把程序改为:


谢谢楼上的指正.


#include <iostream.h>
struct cc
{
int a;
char c;
};

void fun(cc *a)
{
a=new cc;

}

int main()
{

cc *p;
fun(p);
p->a=12;
p->c='b';
cout<<p->a<<p->c;


system("PASUE");
return 0;
}




但是经过一番思考后,引出第二个问题 虽然楼上写的能通过编译 但 在编程习惯的法则里


return 语句是不准返回指向STACK上的指针的
而上面却在STACK上申请了内存(STACK内存迅速,但容量低),且返回了指向STACK的指针.


在GTK中也经常这样写......所以感到有点纳闷了~~

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;
}



jufeng2309 2007-06-21
  • 打赏
  • 举报
回复
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;
}
源码下载地址: https://pan.quark.cn/s/40677b766bda "ContextCapture 倾斜摄影快速、创新及全面空三建模与单机集群硬件部署方案2018" 此资源聚焦于倾斜摄影(ContextCapture)空三建模及单机集群硬件部署方案,致力于为用户呈现最快、最优成本效益的台式工作站、移动工作站、并行集群的多样化部署选择。以下是该资源的详细知识点概述: 一、相关设备型号说明 * UltraLAB 是西安坤隆计算机科技有限公司推出的专属图形工作站品牌,具备三大卓越优势:顶尖的计算硬件架构、精准的行业应用定制服务、专业的硬件系统优化工艺。 二、硬件部署方案 * 台式工作站部署建议:设备特色在于当前市场上最快的台式计算架构,适用于办公场景下,部门层级常规的倾斜摄影空三处理、三维建模。 * 便携式工作站部署建议:设备特色在于当前市场上最快的移动计算架构,适用于移动倾斜摄影的空三处理、三维建模工作站。 * 大数据量处理工作站推荐:设备特色在于极限自动超频加速与16个并行存储构造,具备空三处理和三维建模最强的计算性能及海量高速并行存储性能。 * 多设备并行计算集群部署建议:针对海量图像数据计算产生的巨大需求,单机计算能力处理时间过长,效率不高,通过多台机器并行集群,进行空三处理、三维建模,显著减少处理时间。 三、部署方案深入解析 * 2.1 倾斜摄影建模(台式工作站)部署方案:设备特色在于最高的计算处理能力~6核5.2GHz,内存最大配置可达64GB,配备最新图灵架构的RTX显卡,相比市场其他品牌机器(单CPU、双Xeon处理器)更快、更具成本效益。 * 2.2 倾斜摄影建模(移动便携式工作站)硬件部署方案:设备特色在于最高的计算处理能力~6...

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧