一个有意思的东西,高手来解释一下!!!

zdwlljzdw1 2006-10-12 03:01:45
首先我定义了一个结构体 struct point
{
int x;
int y;
}
然后我在一个按钮的单击事件里给写如下代码:
point *ptrPt;
ptrPt->x=3;
ptrPt->y=5;
label1.caption=ptrPt->3;
程序运行没问题,但是当我一旦关闭窗口,就会发生错误
如果我使用分配堆内存的方法,关闭窗口则不会报错
请高手分析下原因!
...全文
149 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cczlp 2006-10-12
  • 打赏
  • 举报
回复
ptrPt是个野指针, 没有分配空间.
9527 2006-10-12
  • 打赏
  • 举报
回复
我晕,上面说反了
char ch1---在栈中
char *ch1 =new char;--在堆中
但是指针本身一直在栈中。

堆(Heap)--一般存放全局变量,malloc和new分配空间
栈(stack)--函数的局部变量,输入输出参数
9527 2006-10-12
  • 打赏
  • 举报
回复
搂主,和堆栈没有关系,作为你定义的结构,其效果和基本类型一样的,我们用char举例子
char ch1;
char *ch2;

ch1='a';
*ch2='b';
对于ch2的使用不报错才怪,回过头看ch1
char ch1---在堆中
char *ch1 =new char;--在栈中
但是指针本身一直在堆中。

fanswc 2006-10-12
  • 打赏
  • 举报
回复
只知道BCB,,只允许在堆上分配,,,
zdwlljzdw1 2006-10-12
  • 打赏
  • 举报
回复
我的意思是,不讨论程序的功用性
是想请大家分析下原因,我想这个原因应该是和
指针与内存有关把,我也说了,当我分配堆内存的时候
是不发生错误的! 但是如果在栈中按指针分配内存,就出错!
BlueCapricorn 2006-10-12
  • 打赏
  • 举报
回复
什么叫懂?
struct和class的道理一样地。
class a
{
....
};
a *b = new a;
b->....
zdwlljzdw1 2006-10-12
  • 打赏
  • 举报
回复
也是想好好研究下指针,请懂的朋友分析下
zdwlljzdw1 2006-10-12
  • 打赏
  • 举报
回复
我只是想了解这是为什么
FFSB 2006-10-12
  • 打赏
  • 举报
回复
这么高难度的问题都让楼主发现了!
BlueDeepOcean 2006-10-12
  • 打赏
  • 举报
回复
晕……
BlueDeepOcean 2006-10-12
  • 打赏
  • 举报
回复
struct point
{
int x;
int y;
};
point ptrPt;

ptrPt.x = 3;
ptrPt.y = 4;
daydayup234 2006-10-12
  • 打赏
  • 举报
回复
要么
point *ptrPt=new point;
ptrPt->x=3;
ptrPt->y=5;

要么
point Pt;
Pt.x=3;
Pt.y=5;

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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