对于一门课程,我正在用 C 语言进行乘法表样式的练习。该代码功能齐全,但自动测试显示它分配了 416 个字节,而它应该只分配 376 个字节。这是值 a=2,b =9,c=11,d=17。我已经通过 valgrind 运行了代码,并打开了所有可能的额外细节,但它并没有真正帮助。
我尝试将标题行生成写入为主时间表创建的一部分,但它最终使用的内存比我当前的方法更多。
destroyTimes 函数也不应该有问题,因为 valgrind 没有报告任何泄漏。
这是 times.c
#include "times.h"
#include <stdlib.h>
#include <stdio.h>
Times* createTimes(uint a, uint b, uint c, uint d) {
int i,j;
int rows=d-c+2;
int cols=b-a+2;
Times* ret = malloc(sizeof(Times));
uint** kert = malloc(sizeof(uint*)*rows);
if (!ret) {
return NULL;
}
ret->a=a;
ret->b=b;
ret->c=c;
ret->d=d;
kert[0] = malloc(sizeof(uint)*(cols+1));
kert[0][0] = 1;
for(j=1;j<cols;j++) {
kert[0][j] = a;
a++;
}
a = ret->a;
for(i=1;i<rows;i++) {
kert[i] = malloc(sizeof(uint)*(cols+1));
for(j=0;j<cols;j++) …Run Code Online (Sandbox Code Playgroud)