试图用C ++填充二维结构数组

时间:2013-05-06 13:34:34

标签: c++ arrays caching dynamic structure

如上所述,我正在尝试创建然后用一些起始数据填充结构数组,然后写入/读取。 根据我之前的问题,我仍在编写缓存模拟器: 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";

1 个答案:

答案 0 :(得分:0)

你应该找到你的快乐。你需要时间来检查它(:

The way to happiness