C++中一个简单的内存泄漏问题

Name=(char*)malloc(sizeof(char));1、执行完这个语句后,是不是Name[0]是给分配的内存的?2、如果输出Name[100],就是超出范围... Name=(char *)malloc(sizeof(char));
1、执行完这个语句后,是不是Name[0]是给分配的内存的?
2、如果输出Name[100],就是超出范围,他会输出其他未知的内容。
3、我就想知道(Name=(char *)malloc(sizeof(char));是不是只有给Name[0]分配的内存?Name=(char *)malloc(2*sizeof(char));就会分配到Name[1]?)
4、输出超出给内存范围的东西是不好的吗?
5、还有Name=(char *)malloc(sizeof(char));是分配-指针-指向-地方-的内存吗?
展开
 我来答
匿名用户
2017-05-01
展开全部
  1. Name=(char *)malloc(sizeof(char)); 是为分配一个char数据类型大小的内存空间, 即Name[0];

  2. C语言不会对数组进行边界检测, 可以输出Name[100], 只是内容未知.

  3. Name=(char *)malloc(2*sizeof(char));  会分配2个char大小的内存空间, 即Name[0], Name[1]

  4. 操作数组边界以外的内存空间是不安全的, 数据也是无意义的.

  5. 是的. (char *)malloc(sizeof(char))分配的内存空间并不是变量Name的地址, 变量Name内存空间中存放的是由malloc分配的内存地址, 是不同的, 即Name指向一个地址(由malloc分配的地址, 而变量Name本身是另一个地址).

东莞市友贸实业有限公司_
2023-11-22 广告
第五代双倍数据速率DDR5双列直插式内存模块是一种高速、高性能的内存模块,适用于需要高带宽和低延迟的应用场景。与前几代内存模块相比,DDR5双列直插式内存模块具有更高的数据传输速率和更低的功耗,同时提供了更大的内存容量和更高的可靠性。在数据... 点击进入详情页
本回答由东莞市友贸实业有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式