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));是分配-指针-指向-地方-的内存吗? 展开
1个回答
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本身是另一个地址).
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询