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本身是另一个地址).

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式