Fou*_*ind 4 c++ arrays memory-management
我可以用以下方式在c ++中使用数组作为类的成员变量吗?或者我应该将它声明为指针?以下代码工作正常.这样做是否正确?(我为了简单而公开了).我也不确定我是否正确使用地图.
#include <iostream>
#include <map>
#include <string.h>
using namespace std;
class SimpleMap{
public:
map<string,int> m;
int i;
int j[];
SimpleMap(int ii);
};
SimpleMap::SimpleMap(int ii){
i = ii;
}
int main(){
SimpleMap mm(5);
mm.m["one"] = 1;
cout<<"hi hru";
cout<<mm.m["one"];
mm.j[0] = 11;
cout << mm.j[0];
}
Run Code Online (Sandbox Code Playgroud)
编辑:我添加了地图成员变量.
实际上,你已经有了一个指针.但它没有初始化.
设置j[0]会在某些情况下,一定的工作,但你写的未分配的内存,或者更糟,内存另一个对象使用.基本上你在应用程序中创建了一个巨大的漏洞.
考虑使用a std::vector,它只是为您完成所有分配/解除分配.如果这不是一个选项,至少初始化数组并且不要超过你分配的数量.
j[]它只是*j指向随机存储器地址的指针.非常非常非常糟糕.