|
|
1
3
您还没有提到这段代码在什么环境下运行。可能是你在吹牛。您正在RiseWindows::Print中的堆栈上声明一个32767字节的数组。在我熟悉的一些嵌入式系统环境中,这将是个坏消息。你能增加堆栈大小和/或在堆上分配缓冲区来测试这个理论吗?您可能希望将该缓冲区设置为std::vector,或者可能设置为私有成员向量,以避免每次调用Print时都对其进行分配和重新分配。 按照这些思路,MAX_PRINT_OUTPUT有多大? |
|
|
2
2
可能不是你问的bug,但在循环中,在某些情况下,你会加倍递增pBuffer,这可能会把你推到缓冲区的末尾,因为你只检查长度-1(用于空终止)。 |
|
|
3
2
随机猜测:我觉得问题是由Printf中的这一行引起的:
我认为这是因为你有一些明显声明的指针和一些明显未声明的指针。字符数组是一个指针——这是不可能的,但并不明显。在函数定义中,Echo args被定义为二维数组,因为它是
此外,据我所知,指向char的const指针只保留指针的值,而不是指针处内容的值。 |
|
|
4
2
你尝试过分而治之的策略吗?
在进行逐步操作时,在单独的窗口中查看args[]指向的内存也会有所帮助。 |
|
|
5
1
|
|
|
6
1
而(pOutput[i]&&(pBuffer-缓冲区)<size(缓冲区)-1)) 更改为: 而(pOutput[i]&&(pBuffer-缓冲区)<size(缓冲区)-2)) 你一次写两个字符,所以你需要确保有足够的空间容纳两个字符。 |
|
|
7
0
不确定它是否应该工作,但Echo不会打印出args的第一个元素
|
|
|
8
0
|
|
|
9
0
工作原理是,我们用以下方法来吹烟囱: char缓冲区[CONSOLE_OUTPUT_SIZE]; 请尝试:
|
|
|
10
0
我还没有真正调查过这件事,但你把自己的类型搞混了。..这非常迂腐,但在C中确实有所不同。
尝试:
此外,我注意到你正在修改这些缓冲区中的内存——你确定你能做到吗?至少,我确信你不能随意使用更多而不分配更多内存。(提示!) 然后,我将使用字符串函数替换换行符(如适用)。
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |