64,683
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> buf;
for (int i =0; i <10 ;++i)
{
buf.push_back(i);
}
for (i=0 ; i < buf.size() ;++i)
{
cout << buf[i] <<endl;
}
return 0;
}
1)
请各位帮忙解答下,这个问题遇到几次了,郁闷
当在函数中调用:
double * SwatchData = new double;
时,若是在程序中调用SwatchData[i]之类的,后面使用
delete SwatchData;时就有错,会出现内存的问题。
---------
越界,double * SwatchData = new double; 后
SwatchData[i] 如果i 〉0,那么你就写越界了,写到你不该写的地方去了
当delete的时候会做检查的,所以报错
2)
下面是一个非常典型的例子,在VC6.0下面调试会报错
#include <iostream>
using namespace std;
int main()
{
int *temp = new int;
for (int i =0; i <10 ;++i)
{
temp[i] = i;
}
delete temp;
return 0;
}
--------
出错原因如上面所说,你应该改为
下面是一个非常典型的例子,在VC6.0下面调试会报错
#include <iostream>
using namespace std;
int main()
{
int *temp = new int[10];
for (int i =0; i <10 ;++i)
{
temp[i] = i;
}
delete[] temp;
return 0;
}
3)
我后面的问题大哥们还没回答呢
那岂不是我无法分配一个动态增长的内存?
比如说我想从一个文件中读取数据存到一个数组中,那我岂不要先遍历一下,获取行数然后才能分配内存?
如果这样的话,那
int *temp = new int;
要它何用?
-------------------
应该情况是的,你先要想办法求得数据的大小,在new []
或则使用c++的容器,比如vector, list 等等