动态申请内存(NEW)常常失败,为什么?

geland 2004-09-10 12:44:32
我在程序里经常会申请存储空间,不知道为什么,NEW操作常常会抛出异常,申请失败,数量一般每次是100K之内,还有就是如果有一次失败了的话,后面的申请操作全部都失败,请大家帮忙分析有那些原因,机器上的内存是有的,就是说我作过实验,在别的程序里,循环申请几百M内存都不会失败。
...全文
482 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2004-09-10
  • 打赏
  • 举报
回复
比较奇怪,step in 一下看看,是不是分配的数量有错误……
geland 2004-09-10
  • 打赏
  • 举报
回复
谢谢热心的朋友们!
geland 2004-09-10
  • 打赏
  • 举报
回复
我就是说有这方面经验的朋友给一些忠告!
goodluckyxl 2004-09-10
  • 打赏
  • 举报
回复
不会吧
new是在堆上分配
只要有虚存都是可以分配的

是不是os出了问题
重起一下看看有没有问题
freefalcon 2004-09-10
  • 打赏
  • 举报
回复
好像是比较奇怪
freshairfly 2004-09-10
  • 打赏
  • 举报
回复
这怎么分析啊,什么都没有。。。。
lsdkzkald 2004-09-10
  • 打赏
  • 举报
回复
不是编译器问题或者IDE吧。

真是奇怪啦。
sdot 2004-09-10
  • 打赏
  • 举报
回复
来晚了,要说的话都被人说完了,哈哈
ly2004_mj 2004-09-10
  • 打赏
  • 举报
回复
我有点奇怪?为什么不用数组来做,而非要用指针?我倒觉得哪一种方法好使就用哪一种方法!
geland 2004-09-10
  • 打赏
  • 举报
回复
怎么跑题了呀,我的问题还没有解决呀
liluvu 2004-09-10
  • 打赏
  • 举报
回复
要在类的构造函数里为p分配空间吧
talentyang 2004-09-10
  • 打赏
  • 举报
回复
在 new 分配了移个a的指针, achout->p分配了一个char*的指针
achout->p="string" 指向了一个静态存储区,
用gets()怎么能写.
hearlihong 2004-09-10
  • 打赏
  • 举报
回复
呵呵
漂流的代码 2004-09-10
  • 打赏
  • 举报
回复
来晚了,哈哈
chenqing1128 2004-09-10
  • 打赏
  • 举报
回复
牛×
thunderclap 2004-09-10
  • 打赏
  • 举报
回复
achout =new a; //new 了一个char*的空间,用来存放指针p的地址&p
achout->p="string"; //使p指向一个字符串常量。
gets(achout->p); //企图修改常量的内容#83,你厉害啊。

hearlihong 2004-09-10
  • 打赏
  • 举报
回复
哦,这样啊。谢谢了,那么new到底做了什么呢?
geland 2004-09-10
  • 打赏
  • 举报
回复
你实际上只分配了一个char *的空间,该指针没有指向合法的存储区域!
geland 2004-09-10
  • 打赏
  • 举报
回复
你并没有为分配到空间,
achout->p="string";表示P指向了一个只读存储区,
你用gets(achout->p);是要往里面写,肯定会错的
hearlihong 2004-09-10
  • 打赏
  • 举报
回复
include <stdio.h>
#include <iostream>
class a {
public:
char *p;
};
int main(void)
{ a *achout;
achout =new a;
achout->p="string";
printf("%s\n", achout->p);
gets(achout->p);
printf("%s\n", achout->p);
return 0;
}
我这里也有个关于内存分配的问题。
我在a中已经用new为p分配了空间,并且可以将“string”赋值到p中去,但是当我用gets函数输入的时候就出错,为什么?
还有,当我用new分配的时候,我的p到底被分配了多少空间呢?
是动态分配吗?
加载更多回复(6)

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧