首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于new delete函数解决思路

2013-12-04 
关于new delete函数楼主是小白想知道一下代码哪里有问题#includestdio.h#includestring.hint main(int

关于new delete函数
楼主是小白关于new delete函数解决思路想知道一下代码哪里有问题
#include"stdio.h"
#include"string.h"

int main(int argc, char* argv[])
{   char *a=new char;
    gets(a);
    printf("%s\n",a);
delete[](a);

return 0;
}
错误对话框截屏:关于new delete函数解决思路
如果不写结尾的delete,执行就是成功的关于new delete函数解决思路

[解决办法]
new/delete;
new[]/delete[];
配着用,别串着用。
[解决办法]
 char *a=new char;
a指针指向的内存,有效大小只有1字节
gets(a);
一个空字符串大小1字节,多一个字符就多一个字节
delete[](a);
在调试模式下,系统在执行delete时发现你使用了不属于你的内存,报错
在发布模式下,这里不会报错,而会在另一个看起来一点关系都没有的地方出更大的错
[解决办法]
new和delete  new [] 和delete []这是必须要匹配的。有时new和delete[]也不一定会报错,这跟编译器的实现有关。
[解决办法]


int main(int argc, char* argv[])
{   
   char *a=new char[100];
    gets(a); // a的长度最长为100
    printf("%s\n",a);

    delete[] a;

    return 0;
}

[解决办法]
请配套使用new []/delete []
#include"stdio.h"
#include"string.h"

int main(int argc, char* argv[])
{
char *a = new char[10];// 这样才是配套使用啊
gets(a);
printf("%s\n", a);
delete[] a;
return 0;
}

热点排行