宣告:
LPWSTR** lines= new LPWSTR*[totalLines];
然后我设置使用:
lines[totalLines]=&totalText;
SetWindowText(totalChat,(LPWSTR)lines[totalLines]);
totalLines++;
现在我知道totalText是正确的,因为如果我使用totalText的SetWindowText它工作正常。我也需要totalLines中的文本。
我也在做:
//accolating more memory.
int orgSize=size;
LPWSTR** tempArray;
if (totalLines == size) {
size *= 2;
tempArray = new LPWSTR*[size];
memcpy(tempArray, lines,sizeof(LPWSTR)*orgSize);
delete [] lines;
lines = tempArray;
}
在需要时分配更多内存。
我的问题是线路没有获得正确的数据。它第一次工作,然后它被破坏了。我一开始以为我会覆盖,但是TotalLines正在增加。希望这是足够的信息。
答案 0 :(得分:4)
LPWSTR
已经a pointer,所以你要创建一个2D指针数组 - 这就是你想要的吗?我想不是,因为这个:
SetWindowText(totalChat,(LPWSTR)lines[totalLines]);
将LPWSTR*
投射到LPWSTR
。你的编译器不是在抱怨吗?
答案 1 :(得分:0)
这两个陈述:
LPWSTR** lines= new LPWSTR*[totalLines];
lines[totalLines]=&totalText;
调用未定义的行为。问题是数组totalLines
长的最大索引是totalLines-1
。
如果您发布了您想要完成的内容,我们可以提供更好的帮助。例如,使用std::vector<std::vector<wchar_t> >
或std::vector<std::basic_string<wchar_t> >
而不是明确分配的LPWSTR
数组,似乎可以更好地解决此问题。
答案 2 :(得分:0)
感谢Ben和Eli我得到了答案。它应该是LPWSTR * lines = new LPWSTR [size];因为LPWSTR已经是一个指针。多谢你们。