结构体中指针内存的分配

yun2009 2011-01-10 03:42:14
typedef struct _list {
_list *next;
LPCTSTR szUserid;
LPCTSTR szUserhavior;
}LIST;
LIST *list;链表
现在想给链表加元素:
LIST *p = new _list; p->szUserd = "12"; p->szUserhavior = "aaaaaa";
然后list->next = p;
因为结构体中有两个元素是指针 所以当程序循环到这运行第二次的时候
list->next 就变成乱码了
想问下 这有什么解决方法?
一定要把结构体中的指针定义成数组,以完成内存分配吗?
...全文
281 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yun2009 2011-01-10
  • 打赏
  • 举报
回复
懂了 谢谢了 我试下cstring
varding 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yun2009 的回复:]

按照楼上的 方法试了下 效果不错
不过问下楼上的
你说程序结束前 要delete 是指什么?
我链表建立完了 应该不用delete吧
是delete P 还是 delete p->szUserd? 删除链表时候才开始delete的吧?

最后问下: char[]这个比较浪费空间吧 因为无法确定分配的空间到底是多大
cstring的效果如何? 如果换成cstring 那么是不是……
[/Quote]

CString和string本质上都是用动态分配内存的,不过他自己能释放内存,用起来很方便,如果你自己用new分配的内存在链表删除的时候要把每个链表内动态分配的内存delete掉
yun2009 2011-01-10
  • 打赏
  • 举报
回复
按照楼上的 方法试了下 效果不错
不过问下楼上的
你说程序结束前 要delete 是指什么?
我链表建立完了 应该不用delete吧
是delete P 还是 delete p->szUserd? 删除链表时候才开始delete的吧?

最后问下: char[]这个比较浪费空间吧 因为无法确定分配的空间到底是多大
cstring的效果如何? 如果换成cstring 那么是不是p->cstring 就不用额外的new一下了?
zjfhgdx 2011-01-10
  • 打赏
  • 举报
回复
char* s="12";
p->szUserd =new char[3];
memcpy_s(p->szUserd,3,s,3);

//程序结束前记得delete
zjfhgdx 2011-01-10
  • 打赏
  • 举报
回复
p->szUserd = "12"; p->szUserhavior = "aaaaaa";
这样产生的是临时变量。。。
要用new分配内存,然后修改内存的内容
mayudong1 2011-01-10
  • 打赏
  • 举报
回复
看后面写的应该没问题,就是你的list有没有new出来呢
varding 2011-01-10
  • 打赏
  • 举报
回复
可以用new char[n]给指针分配内存或者用stl 的string或者用char数组

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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