首页
社区
课程
招聘
[旧帖] [求助][求助]一个C++编程的问题,不会了,来问问 0.00雪花
发表于: 2012-3-27 21:54 1415

[旧帖] [求助][求助]一个C++编程的问题,不会了,来问问 0.00雪花

2012-3-27 21:54
1415
如何不注明char数组的大小,而动态分配内存呢
就是
char *pc = new char[10];
当不注明10的时候,就会出错,现在有没有什么方法不注明数组大小呢。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 38
活跃值: (52)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
那系统怎么知道你要分配多大内存呢?
2012-3-27 22:03
0
雪    币: 279
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不分配
那你想干什么呢
2012-3-27 22:05
0
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是不是写个函数啊,动态监测需要空间大小,然后重设内存大小
2012-3-27 22:09
0
雪    币: 692
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
那你就只定义char *pc,到用的时候再pc = new char[10];  记得要delete
2012-3-27 22:26
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
那还有其他的方法吗?或者是先分配一个空间,例如10,现在要存储15个字符,然后怎么将其存在char[10]中,或者是怎么在这个时候重新定义大小呢
2012-3-27 22:27
0
雪    币: 1760
活跃值: (1616)
能力值: ( LV12,RANK:222 )
在线值:
发帖
回帖
粉丝
7
malloc
realloc
2012-3-27 22:32
0
雪    币: 615
活跃值: (172)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
8
可以这样吧,
char *pc = new char[1]; 静态的话是char *pc= "";
strcat( pc, "数组中增加新数值");

动态的话要delete释放内存。

或者你就用楼上所说的c语言的malloc,不够的时候再realloc一下...
2012-3-27 22:50
0
雪    币: 316
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
en,只对字符串来说 strcat是好想法.

否则你这样必须先做判断,如果所要求的内存空间大于拥有的内存空间 要realloc一下,分配新的基址和空间。
2012-3-27 23:04
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
在linux环境里 char *pc = new char[n];// n是变量 ,貌似是可行的。
2012-3-27 23:46
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
11
[QUOTE=TallPeaks;1057700]在linux环境里 char *pc = new char[n];// n是变量 ,貌似是可行的。...[/QUOTE]
不用说得这么保守,[]里面可以带变量。
楼主为什么不数一下预分配内存的长度,放到nBufferLengh里面,再char *pc = new char[nBufferLengh];
我实在是不明白楼主的意图,也只能这么解答了。
2012-3-28 01:46
0
雪    币: 102
活跃值: (97)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
用容器可以实现
2012-3-28 07:18
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
那样string类型就对字符串的长度没有很明确的限制,用char类型怎么实现呢?
2012-3-28 08:20
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
走走看看,学习学习
2012-3-28 15:55
0
游客
登录 | 注册 方可回帖
返回
//