我总是写作非常麻烦calloc(1, sizeof(MyStruct)).我不想使用包装此方法等的想法.我的意思是我想知道两个参数给了我什么?如果它给出了什么,为什么没有malloc两个参数?
顺便说一句,我搜索了这个问题的答案,但我没有找到一个非常好的答案.那些答案是calloc可以分配比罐子malloc等更大的块.
我看到另一个calloc分配数组的答案.随着malloc我可以繁殖,我会得到一个数组,我可以在没有1,开始时使用它.
我需要一种非常快速的方法来检查数组的边界.我目前的检查范围是:
template<typename T>
class SmartArray {
//...
int size;
T* array;
T &operator[](int index) {
if (index/size!=0)
throw OUT_OF_RANGE; //#define OUT_OF_RANGE 0x0A
return array[index];
}
}
Run Code Online (Sandbox Code Playgroud)
有更快的方法来检查索引是否超出数组边界?
编辑:
我的解决方案是用负面索引制造麻烦.有办法解决这个问题吗?
例:
H
class MyClass {
int x,y,z;
public:
MyClass(int,int,int);
void X();
void Y();
void Z();
};
Run Code Online (Sandbox Code Playgroud)
CPP
class MyClass {
int x,y,z;
public:
MyClass(int x,int y,int z) {
this->x=x;
this->y=y;
this->z=z;
}
void X() {
printf("x = %d;\n",x);
}
void Y() {
printf("y = %d;\n",y);
}
void Z() {
printf("z = %d;\n",z);
}
};
Run Code Online (Sandbox Code Playgroud)
使它像C#一样.不要包含标题,在CPP中重新声明类,但使用方法体.当文件包含标题时,他从CPP获取extern字段\方法等.
这是合法的吗?我无法预测它的问题.有?
我想比较我在C++和C#的垃圾收集之间的性能.可以GC.Collect()手动拨打电话吗?(我想在特定的时刻运行它.)