VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 254|回复: 6

如何定义一个动态数组通过函数生成新的数组

[复制链接]
93_avatar_middle
最佳答案
0 
在线会员 发表于 2020-3-25 22:42:29 | 显示全部楼层 |阅读模式
82_avatar_middle
最佳答案
14 
在线会员 发表于 2020-3-26 12:33:04 | 显示全部楼层
这种 a 是不能被修改的,必须定义成指针才行
93_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-3-28 11:56:18 | 显示全部楼层
已解决
int a[]={0};
void newarr(int *a)  
这样就能生成动态数组
01_avatar_middle
最佳答案
39 
online_admins 发表于 2020-3-28 12:00:45 | 显示全部楼层
jack32830 发表于 2020-3-28 11:56
已解决
int a[]={0};
void newarr(int *a)  

有问题,楼主是如何生成的,可能会有内存溢出的bug
85_avatar_middle
最佳答案
3 
在线会员 发表于 2020-3-29 10:26:52 | 显示全部楼层
类型 *m = HeapAlloc(m_heap, HEAP_ZERO_MEMORY, sizeof(类型)*动态数量);
只发现这样类似的都可以

楼主的new 也就是  malloc 吧  没搞过c++  arr类型不知道.
93_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-3-29 21:57:55 | 显示全部楼层
admin 发表于 2020-3-28 12:00
有问题,楼主是如何生成的,可能会有内存溢出的bug

  1. int a[]={0};
  2. addArr(a);
  3. void addArr(int* a)
  4. {
  5.         int i=0;
  6.         while(i<10){
  7.                 a[i]=i;
  8.                 i++;
  9.         }
  10. }
复制代码

程序执行是正常数据也正常。还是不理解内存地址的分配。
85_avatar_middle
最佳答案
3 
在线会员 发表于 2020-3-30 13:33:14 | 显示全部楼层
类型*m=malloc (sizeof(类型)*数量)
如果数量=2
使用m[0],m[1]没问题,但是可能发现m[2] 还有数据,后面的m[n]都可能能使用.但是越界了 从m[2]后面运行时的堆可能重合了.
一旦m[n]到了无权限区直接就会蹦掉.
使用m[2]以后的数据影响后面的堆数据.
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-10-22 23:22

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表