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));是分配-指针-指向-地方-的内存吗? 展开
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
展开全部
Name=(char *)malloc(sizeof(char)); 是为分配一个char数据类型大小的内存空间, 即Name[0];
C语言不会对数组进行边界检测, 可以输出Name[100], 只是内容未知.
Name=(char *)malloc(2*sizeof(char)); 会分配2个char大小的内存空间, 即Name[0], Name[1]
操作数组边界以外的内存空间是不安全的, 数据也是无意义的.
是的. (char *)malloc(sizeof(char))分配的内存空间并不是变量Name的地址, 变量Name内存空间中存放的是由malloc分配的内存地址, 是不同的, 即Name指向一个地址(由malloc分配的地址, 而变量Name本身是另一个地址).
东莞市友贸实业有限公司_
2023-11-22 广告
2023-11-22 广告
第五代双倍数据速率DDR5双列直插式内存模块是一种高速、高性能的内存模块,适用于需要高带宽和低延迟的应用场景。与前几代内存模块相比,DDR5双列直插式内存模块具有更高的数据传输速率和更低的功耗,同时提供了更大的内存容量和更高的可靠性。在数据...
点击进入详情页
本回答由东莞市友贸实业有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询