永发信息网

【急】不知道数据大小,如何分配内存?

答案:4  悬赏:30  手机版
解决时间 2021-01-26 08:35
  • 提问者网友:你给我的爱
  • 2021-01-25 17:30
PointCloud *p_pointdata=NULL;
p_pointdata=new PointCloud[point_num]; //根据点数分配内存

当我事先不知道point_num的大小,而想根据后面的具体情况确定p_pointdata里存多少个点,这里该如何定义指针p_pointdata?
最佳答案
  • 五星知识达人网友:躲不过心动
  • 2021-01-25 18:09
#include 

using namespace std;

template
struct node{

    DATA *p_data;

    int length;

    node(){p_data = NULL;length=0;}

    node(int _length){length = _length; p_data = new DATA[_length];}
};

int main(int argc, char *argv[]){

node *nodeA = new node(100);

node *nodeB = new node(500);

return 0;
}
全部回答
  • 1楼网友:雪起风沙痕
  • 2021-01-25 21:06
p_pointdata=new PointCloud[point_num];是分配动态内存,是什么时候都可以执行的,因此只需要确定p_pointdata里存多少个点之后再分配。
  • 2楼网友:三千妖杀
  • 2021-01-25 19:46
加一句啊 ,判断循环,当你输入一个指定的数据时就停止分配内存,比如字符型的 char ch; while((ch=getchar())!='#') { PointCloud *p1,*p2; p1=p_pointdata; p2=(PointCloud*)malloc(sizof(PointCloud)); p1->next=p2; p1=pq->next; } 最后你的p_pointdata指向的是链表的头部,不就是动态链表啊
  • 3楼网友:荒野風
  • 2021-01-25 18:32
有以下几个办法: 1 看电脑的内存大小可以打开“我的电脑”单击属性就可以看到,也可以用软件看(如优化大师或电脑自带的诊断软件去看) 2 你电脑运行慢了有以下几点: (1)内存小了,内存频录底了不能和电脑cpu协调工作 (2)cpu有问题(如高温或高压使cpu不能正常工作) (3)电脑中病毒 (4)电脑硬件有问题(如内存氧化了等等) 3本人建议你去买本电脑书看看
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯