20260829 Redesign

This commit is contained in:
2026-08-29 00:53:40 +08:00
parent f9345bdc0a
commit bf5fc3bda6
44 changed files with 2941 additions and 1 deletions
+76
View File
@@ -0,0 +1,76 @@
#include "c_Memory.h"
#include <stdlib.h>
#include <stdio.h>
#include "c_Test.h"
#define C_ASSERT_ALIGNED_TO(ptr, align) \
C_ASSERT(((uintptr_t)(ptr) % (align)) == 0, "内存物理地址必须符合指定的字节对齐边界")
C_TEST_CASE(test_natural_alignment_and_macro_flows)
{
/* 测试 A: 验证普通分配是否完美顺应您设计的最大自然对齐 (16 字节) */
int* natural_arr = (int*)C_ALLOC(32 * sizeof(int));
C_ASSERT(natural_arr != NULL, "分配不能为 NULL");
/* 🎯 绝杀:现在的默认分配将百分之百通过您的 C_ALIGN_SIZE 自然边界断言! */
C_ASSERT_ALIGNED_TO(natural_arr, C_ALIGN_SIZE);
C_FREE(natural_arr);
}
C_TEST_CASE(test_hardware_cacheline_alignment)
{
/* 测试 B: 显式强制申请 64 字节对齐(用于后续 Math 模块的 AVX 向量化) */
/* 修正:申请大小(256字节)必须是 64 字节对齐边界的整数倍 */
double* simd_vector = (double*)c_Memory_Aligned_Alloc(64, 32 * sizeof(double), __FILE__, __LINE__);
C_ASSERT(simd_vector != NULL, "强行显式对齐分配不能为 NULL");
/* 验证底层跨平台 _aligned_malloc 或 posix_memalign 强行开辟 64 字节边界成功 */
C_ASSERT_ALIGNED_TO(simd_vector, 64);
c_Memory_Aligned_Free(simd_vector, __FILE__, __LINE__);
}
C_TEST_CASE(test_resize_integrity_with_natural_bounds)
{
/* 测试 C: 测试您定义的 C_RESIZE 动态增减流 */
double* dynamic_data = (double*)C_ALLOC(2 * sizeof(double)); /* 初始分配 16 字节 */
C_ASSERT(dynamic_data != NULL, "初始分配成功");
dynamic_data[0] = 3.14159265;
dynamic_data[1] = 2.71828182;
/* 扩容到 16 个 double (128 字节,依然是 C_ALIGN_SIZE 的倍数) */
C_RESIZE(dynamic_data, 16 * sizeof(double));
C_ASSERT(dynamic_data != NULL, "C_RESIZE 扩容成功");
C_ASSERT_ALIGNED_TO(dynamic_data, C_ALIGN_SIZE);
/* 数据完整性校验 */
C_ASSERT_DOUBLE_EQ(dynamic_data[0], 3.14159265, "重分配后元素0完好无损");
C_ASSERT_DOUBLE_EQ(dynamic_data[1], 2.71828182, "重分配后元素1完好无损");
C_FREE(dynamic_data);
}
/* ==============================================================================
* 🚀 测试用例统一调度主函数
* ============================================================================== */
int main(int argc, char** argv) {
C_TEST_SUITE_BEGIN(CrossPlatformMemoryTestSuite)
/* 依次注入并运行函数式测试用例 */
C_RUN_TEST_CASE(test_natural_alignment_and_macro_flows);
C_RUN_TEST_CASE(test_hardware_cacheline_alignment);
C_RUN_TEST_CASE(test_resize_integrity_with_natural_bounds);
/* 终极防线:测试套件自身的闭环审计 */
#if !defined(NDEBUG) && defined(C_MEMORY_CHECK_ENABLE)
printf("\n[Final Guard] 正在对全套件本身执行终极内存合规复盘...");
c_size_t self_leaks = c_memory_leak_report();
C_ASSERT_INT_EQ(self_leaks, 0, "确保本测试文件自身没有任何漏掉 C_FREE 的内存尾巴");
#endif
C_TEST_SUITE_END()
}