为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不能这样分配内存呢

char *str = new char(100);

正在回答

3 回答

你再回去认真听听老师是怎么讲解的,圆括号()是赋初值的,要申请一百个char应该写为char【100】

0 回复 有任何疑惑可以回复我~
#1

南威创 提问者

哦~~谢谢
2017-12-26 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5a35ca160001ce1606980579.jpg我是说图1这种,老师上课的时候是可以的,图2是我结果,以下是我代码:

#include <string.h>

#include <iostream>

using namespace std;

int main(void)

{

    //在堆中申请100个char类型的内存

    char *str = new char(100);

     if(NULL == str)

     {

         system("pause");

         return 0;

    }

    

    //拷贝Hello C++字符串到分配的堆中的内存中

    strcpy(str, "Hello imooc");

    //打印字符串

    cout<< str <<endl;

    //释放内存

    delete str;

    str = NULL;

    system("pause");

    return 0;

}


0 回复 有任何疑惑可以回复我~
#1

qq_慕虎1144658

你这是申请100个吗。你这意思就是str指针指的是申请的100这个数,这个100你又给他放char类型里面,后面又给这个char附了个字符串,肯定更错了
2019-02-27 回复 有任何疑惑可以回复我~

因为内存申请不一定成功啊


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之离港篇
  • 参与学习       122700    人
  • 解答问题       474    个

C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通

进入课程

为什么不能这样分配内存呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信