小编Sir*_*sis的帖子

C 代码分配的内存多于应有的内存

对于一门课程,我正在用 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)

c dynamic-memory-allocation

1
推荐指数
1
解决办法
100
查看次数

标签 统计

c ×1

dynamic-memory-allocation ×1