您现在的位置是:主页 > news > 怎么做网站流量统计分析/互联网广告优势

怎么做网站流量统计分析/互联网广告优势

admin2025/5/4 14:50:12news

简介怎么做网站流量统计分析,互联网广告优势,做网站下载什么软件,电子商务专升本需要考些什么科目PAGEPAGE #C 语言多线程内存管理模块摘要:一个多线程动态内存管理模块,可以有效地检测C 语言中内存泄漏和内存越界等错误。1 原理分配通过重新改写内存分配函数, 把调用时的信息保存在一个节点中, 节点中包括此内存分 配的首地址&…

怎么做网站流量统计分析,互联网广告优势,做网站下载什么软件,电子商务专升本需要考些什么科目PAGEPAGE #C 语言多线程内存管理模块摘要:一个多线程动态内存管理模块,可以有效地检测C 语言中内存泄漏和内存越界等错误。1 原理分配通过重新改写内存分配函数, 把调用时的信息保存在一个节点中, 节点中包括此内存分 配的首地址&…

PAGE

PAGE #

C 语言多线程内存管理模块

摘要:

一个多线程动态内存管理模块,可以有效地检测C 语言中内存泄漏和内存越界等错

误。

1 原理

分配

通过重新改写内存分配函数, 把调用时的信息保存在一个节点中, 节点中包括此内存分 配的首地址,大小以及分配所在的源文件、函数、行号,并用一个 HASH 表来保存所有节 点。

越界检测 为了检测写越界的错误,在用户申请的内存前后各增加了一定大小的内存作为监测区 域,并初始化成预定值(Oxdeadbeef)。如果发生越界写操作时,预定值就会发生改变,即

可检测到越界操作错误。

释放

重新改写内存释放函数free,释放时节点从 HASH表中删除并进行越界检测。

查看

手动调用 show_memory()或show_memory_summary()查看内存使用情况并进行越界检 测。

以下涉及内存分配和内存释放的函数被重新改写:

malloc

calloc

realloc

strdup

strndup

asprintf

vasprintf

HASH 表如下图所示:

regions

U—

region

1

2

i

r egi on

regionl

3

4

5

regi on

6

7

9

LD

r € g.1 OIL

562

节点结构如下:static struct mm_regi on{structmm_regio n *n ext;

节点结构如下:

static struct mm_regi on

{

structmm_regio n *n ext;

char file[40];

char func[40];

unsigned int lineno; size_t len;

un sig ned intfen ce;

unsigned char data[0];

len长度的一块内存 */

} *regio ns[SOME_PRIME];

/*分配所在的函数*/

/*分配所在的行*/

/*内存分配的大小 */

/*内存起始边界,用于头越界检测*/

/*用户内存分配首地址,malloc等函数返回以此为首地址的

内存中一条节点的结构:

mm_regionnextfilefunclinenolendata内存结束边界 检测尾越界fenceOxdeadbeef内存起始边界 检测头越界fenceOxdeadbeef

mm_region

next

file

func

lineno

len

data

内存结束边界 检测尾越界

fence

Oxdeadbeef

内存起始边界 检测头越界

fenceOxdeadbeef

2测试

步骤:

引入头文件:在需要检测的C/C++文件中引入”mm.h”头文件;

查看内存使用情况:调用show_memory()函数查看本文件中内存泄漏详细情况,或调用

show_memory_summary()函数查看本文件中内存泄漏统计情况。

2.1

内存泄漏

2.1.1

测试代码

#in clude

/* 加入头文件 mm.h */

#i nclude"mm.h" int main( int argc, char *argv[]) {

char *mp = NULL;

char *cp = NULL;

mp = ( char *)malloc(6); cp = ( char *)calloc(1,10);

/*查看内存泄漏*/

show_memory(); show_memory_summary();

return 0;

}

2.1.2 测试结果

LEAK DETAIL:

6 bytes allocated inmain at line11 of nain.c

10 bytes allocated innain at line12 of

16 bytes allocated in 2 allocations

LEAK SUMMARY:

16 buites in 2 allocations in File ,恤

16 bytes allocated in 2 曰1丄口匚ction零

2.2内存越界

2.2.1测试代码

#i nclude

/* 加入头文件 mm.h */

#i nclude "mm.h"

int main( int argc, char *argv[]) {

char *mp = NULL;

mp = ( char *)malloc(6);

/*越界操作*/

memset(mp,0, 10);

/*释放或查看内存时检测*/

free(mp);

return 0;

}

222测试结果

WARNING: High Fenceal 0x87c70£8k i