空间分配的方式

shingyuan 2010-01-23 04:54:24
小弟最近开始看数据结构和算法的入门知识

想实现一个“单链表”。

首先定义一个结构:
struct Node
{
int a;
int* next;
}

然后打算构造一个有1000个元素的表。小弟用的编译器是VS2008.这里大概要用到动态分配空间,小弟知道c语言里面有malloc函数可以做这件事情,不过这个方式似乎年代久远了。在VC++2008里面,还有没有别的方式来做这件事情?这些方法如何选择使用?

谢谢大家
...全文
112 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fenix124 2010-01-25
  • 打赏
  • 举报
回复
new 会调用构造函数,malloc不会。delete,delete[]和free的区别也是是否调用析构函数,调用析构函数的方式的差别.
rebirth2009 2010-01-25
  • 打赏
  • 举报
回复
new和malloc,哎……
shingyuan 2010-01-24
  • 打赏
  • 举报
回复
继续问一下:

struct Node
{
int a;
Node* next;
}


这样的情况出现了自己定义自己。有点逻辑循环的味道。这个如何理解?
shingyuan 2010-01-24
  • 打赏
  • 举报
回复
是的,小弟理解偏差。应该改为Node* next;
chenzhenhong0814 2010-01-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 shingyuan 的回复:]
小弟最近开始看数据结构和算法的入门知识

想实现一个“单链表”。

首先定义一个结构:C/C++ codestruct Node
{int a;int* next;
}
然后打算构造一个有1000个元素的表。小弟用的编译器是VS2008.这里大概要用到动态分配空间,小弟知道c语言里面有malloc函数可以做这件事情,不过这个方式似乎年代久远了。在VC++2008里面,还有没有别的方式来做这件事情?这些方法如何选择使用?

谢谢大家
[/Quote]

int* next; 应该改为Node* next;吧
个人觉得new比较方便……
chenzhenhong0814 2010-01-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shingyuan 的回复:]
继续问一下:

C/C++ codestruct Node
{int a;
Node* next;
}

这样的情况出现了自己定义自己。有点逻辑循环的味道。这个如何理解?
[/Quote]
可以通过编译时内存分配来理解,Node* next;定义了一个指针变量,而编译时为指针变量分配的内存大小是确定的,跟指向的类型没关。但如果改为Node next;就不行了,应为编译时无法确定应分配多大的空间,所以出错。不过用Java的话就没问题。
LENOVO_ 2010-01-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shingyuan 的回复:]
new 本质上和 malloc 是一样的吗?
[/Quote]

VS2008 的话,好操作。

你 用 关键字 new 写个代码,然后 调试,到 new 这行的时候 F11 单步跟踪进去,你会发现
alloc这样的函数。

你再用malloc写个代码,再F11进去,也会看到alloc这样的函数。

本质上都是调用了一些低层的函数。

new 和 malloc 个人感觉没有那个更高级之说。用哪个都行,,不过时。。。
shingyuan 2010-01-23
  • 打赏
  • 举报
回复
new 本质上和 malloc 是一样的吗?
go_Michael 2010-01-23
  • 打赏
  • 举报
回复
c++用new分配 用delete析构

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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