gpt4 book ai didi

检查正确的数组长度是否是 C 中的 malloc

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:29 27 4
gpt4 key购买 nike

我正在给一堆学生作业评分。

他们正在设计自己的动态数组数据类型。我正在寻找一种好的测试方法,以确保它们在重新调整大小时为数组分配正确数量的内存。

除了检查代码之外,还有其他方法可以轻松测试 malloc 调用创建的内存量吗?他们应该跟踪容量,但我需要测试他们这样做是否正确。

如果他们没有分配足够的内存以便我可以继续运行其他测试,如果测试没有以段错误结束,我也希望如此。

谢谢!

最佳答案

您可以提供您自己的 malloc()calloc()realloc()free() 版本 通过重新定义标准函数名称来进行测试。

使用 gcc,我将创建一个包含替换函数的目标文件

gcc -c myfunctions.c -omyfunctions.o

并使用重新定义和替换链接编译测试文件

gcc myfunctions.o -Dmalloc=mymalloc -Dcalloc=mycalloc -Drealloc=myrealloc -Dfree=myfree testfile.c

而不是学生使用的

gcc testfile.c

my*() 函数的实现应该不会太困难。基本上他们检查参数并调用原始函数。

/* myfunctions.c */
#include <stdlib.h>
void *mymalloc(size_t s) {
/* test s */
return malloc(s);
}
void *mycalloc(size_t n, size_t s) {
/* test n and s */
return calloc(n, s);
}
void *myrealloc(void *p, size_t s) {
/* test p and s */
return realloc(p, s);
}
void myfree(void *p) {
/* test p */
free(p);
}

关于检查正确的数组长度是否是 C 中的 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com