Closed. This question is off-topic. It is not currently accepting answers. Learn more。
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
三年前关闭。
我在C中有一个奇怪的错误。我们有下面的代码,我第一次尝试它时没有使用中间的两个
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
三年前关闭。
我在C中有一个奇怪的错误。我们有下面的代码,我第一次尝试它时没有使用中间的两个
fprintf(f, "Passed PKLEN pklen: %u ,params->pklen: %u \n", pklen, params->pklen);
函数,结果得到了似乎是内存损坏的结果,在这里pklen
不再等于params->pklen
。当我把这两个中间的数字加起来以确定实际的腐败发生在哪里时。。。这两个人比上一个平起平坐。void ntru_get_seed(uint8_t *msg, uint16_t msg_len, NtruIntPoly *h, uint8_t *b, const NtruEncParams *params, uint8_t *seed) {
FILE *f = fopen("log.txt", "a");
uint16_t oid_len = sizeof params->oid;
uint16_t pklen = params->pklen;
fprintf(f, "Passed PKLEN pklen: %u ,params->pklen: %u \n", pklen, params->pklen);
fflush(f);
uint8_t bh[ntru_enc_len(params)];
fprintf(f, "Passed PKLEN pklen: %u ,params->pklen: %u \n", pklen, params->pklen);
ntru_to_arr(h, params->q, (uint8_t*)&bh);
fprintf(f, "Passed PKLEN pklen: %u ,params->pklen: %u \n", pklen, params->pklen);
uint8_t htrunc[pklen/8];
fprintf(f, "Passed PKLEN pklen: %u ,params->pklen: %u \n", pklen, params->pklen);
fprintf(f, "bh: %u \n", &bh);
fflush(f);
...
最佳答案
当然。将调用添加到fprintf()
会移动内存中代码的其他部分,并更改被覆盖的内容。
把旧的代码放回去,用调试器单步执行,你就可以看到被覆盖的代码。
同时打开所有可能的警告和错误并修复代码,这样就不会得到任何警告和错误。
10-06 06:35