如上所述,我正在尝试创建然后用一些起始数据填充结构数组,然后写入/读取。 根据我之前的问题,我仍在编写缓存模拟器: Any way to get rid of the null character at the end of an istream get?
以下是我制作阵列的方法:
struct cacheline
{
string data;
string tag;
bool valid;
bool dirty;
};
cacheline **AllocateDynamicArray( int nRows, int nCols)
{
cacheline **dynamicArray;
dynamicArray = new cacheline*[nRows];
for( int i = 0 ; i < nRows ; i++ )
dynamicArray[i] = new cacheline [nCols];
return dynamicArray;
}
我是从主要来的:
cacheline **cache = AllocateDynamicArray(nooflines,noofways);
似乎创建了数组ok,但是当我尝试填充它时出现内存错误,这就是我试图这样做的方法:
int fillcache(cacheline **cache, int cachesize, int cachelinelength, int ways)
{
for (int j = 0; j < ways; j++)
{
for (int i = 0; i < cachesize/(cachelinelength*4); i++)
{
cache[i][ways].data = "EMPTY";
cache[i][ways].tag = "";
cache[i][ways].valid = 0;
cache[i][ways].dirty = 0;
}
}
return(1);
}
用以下方式调用:
fillcache(cache, cachesize, cachelinelength, noofways);
现在,这是我第一次真正尝试使用动态数组,因此我完全有可能完全错误,更不用说在尝试使用2d时,任何想法都会受到高度赞赏:)< / p>
此外,是否有更简单的方法来写入/读取数组?目前(我认为)我必须每次都向函数传递大量变量,包括数组(或指向数组的指针?),这看起来效率不高? 我不确定的其他东西,当我传递数组(指针?)并编辑数组时,当我退出函数时,数组是否仍会被编辑?
由于
编辑: 刚刚注意到一个非常愚蠢的错误,它应该是:
cache[i][j].data = "EMPTY";