浏览代码

Alloc/Free debugging for Windows (temporary instrumentation)

bel 11 年之前
父节点
当前提交
51852668b4
共有 1 个文件被更改,包括 32 次插入4 次删除
  1. 32 4
      src/civetweb.c

+ 32 - 4
src/civetweb.c

@@ -320,21 +320,49 @@ typedef int SOCKET;
 #define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
 
 void * mg_malloc(size_t size) {
+    void * data = malloc(size);
+    
+    char mallocStr[256];
+    sprintf(mallocStr, "malloc(%u) -> %p\n", size, data);
+    OutputDebugStringA(mallocStr);
+
     return malloc(size);
 }
 
 void * mg_calloc(size_t count, size_t size) {
-    return calloc(count, size);
-}
 
-void * mg_realloc(void * memory, size_t newsize) {
-    return realloc(memory, newsize);
+    void * data = mg_malloc(size);
+    if (data) memset(data, 0, size);
+
+    return data;
 }
 
 void mg_free(void * memory) {
+
+    char mallocStr[256];
+    sprintf(mallocStr, "free(%p)\n", memory);
+    OutputDebugStringA(mallocStr);
+
     free(memory);
 }
 
+void * mg_realloc(void * memory, size_t newsize) {
+
+    void * data;
+    if (newsize) {
+        data = mg_malloc(newsize);
+        if ((data!=NULL) && (memory!=NULL)) {
+            memcpy(data, memory, newsize);
+            mg_free(memory);
+        }
+    } else {
+        data = 0;
+        mg_free(memory);
+    }
+
+    return data;
+}
+
 #define malloc  DO_NOT_USE_THIS_FUNCTION__USE_mg_malloc
 #define calloc  DO_NOT_USE_THIS_FUNCTION__USE_mg_calloc
 #define realloc DO_NOT_USE_THIS_FUNCTION__USE_mg_realloc