如何實現一個malloc

李肖遙 2025-04-19 22:11
? ? 關注、星標公眾號,直達精彩內容


作者:張洋

https://kb.cnblogs.com/page/512454/

任何一個用過或學過C的人對malloc都不會陌生。大家都知道malloc可以分配一段連續的內存空間,并且在不再使用時可以通過free釋放掉。但是,許多程序員對malloc背后的事情并不熟悉,許多人甚至把malloc當做操作系統所提供的系統調用或C的關鍵字。

實際上,malloc只是C的標準庫中提供的一個普通函數,而且實現malloc的基本思想并不復雜,任何一個對C和操作系統有些許了解的程序員都可以很容易理解。

這篇文章通過實現一個簡單的malloc來描述malloc背后的機制。當然與現有C的標準庫實現(例如glibc)相比,我們實現的malloc并不是特別高效,但是這個實現比目前真實的malloc實現要簡單很多,因此易于理解。重要的是,這個實現和真實實現在基本原理上是一致的。

這篇文章將首先介紹一些所需的基本知識,如操作系統對進程的內存管理以及相關的系統調用,然后逐步實現一個簡單的malloc。為了簡單起見,這篇文章將只考慮x86_64體系結構,操作系統為Linux。

1 什么是malloc

在實現malloc之前,先要相對正式地對malloc做一個定義。

根據標準C庫函數的定義,malloc具有如下原型:

void* malloc(size_t size);

這個函數要實現的功能是在系統中分配一段連續的可用的內存,具體有如下要求:

  • malloc分配的內存大小至少為size參數所指定的字節數
  • malloc的返回值是一個指針,指向一段可用內存的起始地址
  • 多次調用malloc所分配的地址不能有重疊部分,除非某次malloc所分配的地址被釋放掉
  • malloc應該盡快完成內存分配并返回(不能使用NP-hard[1]的內存分配算法)
  • 實現malloc時應同時實現內存大小調整和內存釋放函數(即realloc和free)

對于malloc更多的說明可以在命令行中鍵入以下命令查看:

man malloc

2 預備知識

在實現malloc之前,需要先解釋一些Linux系統內存相關的知識。

2.1 Linux內存管理

2.1.1 虛擬內存地址與物理內存地址

為了簡單,現代操作系統在處理內存地址時,普遍采用虛擬內存地址技術。即在匯編程序(或機器語言)層面,當涉及內存地址時,都是使用虛擬內存地址。采用這種技術時,每個進程仿佛自己獨享一片2N字節的內存,其中N是機器位數。例如在64位CPU和64位操作系統下,每個進程的虛擬地址空間為264Byte。

這種虛擬地址空間的作用主要是簡化程序的編寫及方便操作系統對進程間內存的隔離管理,真實中的進程不太可能(也用不到)如此大的內存空間,實際能用到的內存取決于物理內存大小。

由于在機器語言層面都是采用虛擬地址,當實際的機器碼程序涉及到內存操作時,需要根據當前進程運行的實際上下文將虛擬地址轉換為物理內存地址,才能實現對真實內存數據的操作。這個轉換一般由一個叫MMU[2](Memory Management Unit)的硬件完成。

2.1.2 頁與地址構成

在現代操作系統中,不論是虛擬內存還是物理內存,都不是以字節為單位進行管理的,而是以頁(Page)為單位。一個內存頁是一段固定大小的連續內存地址的總稱,具體到Linux中,典型的內存頁大小為4096Byte(4K)。

所以內存地址可以分為頁號和頁內偏移量。下面以64位機器,4G物理內存,4K頁大小為例,虛擬內存地址和物理內存地址的組成如下:

圖片

上面是虛擬內存地址,下面是物理內存地址。由于頁大小都是4K,所以頁內便宜都是用低12位表示,而剩下的高地址表示頁號。

MMU映射單位并不是字節,而是頁,這個映射通過查一個常駐內存的數據結構頁表[3]來實現。現在計算機具體的內存地址映射比較復雜,為了加快速度會引入一系列緩存和優化,例如TLB[4]等機制。下面給出一個經過簡化的內存地址翻譯示意圖,雖然經過了簡化,但是基本原理與現代計算機真實的情況的一致的。

圖片

2.1.3 內存頁與磁盤頁

我們知道一般將內存看做磁盤的的緩存,有時MMU在工作時,會發現頁表表明某個內存頁不在物理內存中,此時會觸發一個缺頁異常(Page Fault),此時系統會到磁盤中相應的地方將磁盤頁載入到內存中,然后重新執行由于缺頁而失敗的機器指令。關于這部分,因為可以看做對malloc實現是透明的,所以不再詳細講述,有興趣的可以參考《深入理解計算機系統》相關章節。

最后附上一張在維基百科找到的更加符合真實地址翻譯的流程供大家參考,這張圖加入了TLB和缺頁異常的流程(圖片來源頁[5])。

圖片

2.2 Linux進程級內存管理

2.2.1 內存排布

明白了虛擬內存和物理內存的關系及相關的映射機制,下面看一下具體在一個進程內是如何排布內存的。

以Linux 64位系統為例。理論上,64bit內存地址可用空間為0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF,這是個相當龐大的空間,Linux實際上只用了其中一小部分(256T)。

根據Linux內核相關文檔[6]描述,Linux64位操作系統僅使用低47位,高17位做擴展(只能是全0或全1)。所以,實際用到的地址為空間為0x0000000000000000 ~ 0x00007FFFFFFFFFFF和0xFFFF800000000000 ~ 0xFFFFFFFFFFFFFFFF,其中前面為用戶空間(User Space),后者為內核空間(Kernel Space)。圖示如下:

圖片

對用戶來說,主要關注的空間是User Space。將User Space放大后,可以看到里面主要分為如下幾段:

  • Code:這是整個用戶空間的最低地址部分,存放的是指令(也就是程序所編譯成的可執行機器碼)
  • Data:這里存放的是初始化過的全局變量
  • BSS:這里存放的是未初始化的全局變量
  • Heap:堆,這是我們本文重點關注的地方,堆自低地址向高地址增長,后面要講到的brk相關的系統調用就是從這里分配內存
  • Mapping Area:這里是與mmap系統調用相關的區域。大多數實際的malloc實現會考慮通過mmap分配較大塊的內存區域,本文不討論這種情況。這個區域自高地址向低地址增長
  • Stack:這是棧區域,自高地址向低地址增長

下面我們主要關注Heap區域的操作。對整個Linux內存排布有興趣的同學可以參考其它資料。

2.2.2 Heap內存模型

一般來說,malloc所申請的內存主要從Heap區域分配(本文不考慮通過mmap申請大塊內存的情況)。

由上文知道,進程所面對的虛擬內存地址空間,只有按頁映射到物理內存地址,才能真正使用。受物理存儲容量限制,整個堆虛擬內存空間不可能全部映射到實際的物理內存。Linux對堆的管理示意如下:

圖片

Linux維護一個break指針,這個指針指向堆空間的某個地址。從堆起始地址到break之間的地址空間為映射好的,可以供進程訪問;而從break往上,是未映射的地址空間,如果訪問這段空間則程序會報錯。

2.2.3 brk與sbrk

由上文知道,要增加一個進程實際的可用堆大小,就需要將break指針向高地址移動。Linux通過brk和sbrk系統調用操作break指針。兩個系統調用的原型如下:

int brk(void *addr);
void *sbrk(intptr_t increment);

brk將break指針直接設置為某個地址,而sbrk將break從當前位置移動increment所指定的增量。brk在執行成功時返回0,否則返回-1并設置errno為ENOMEM;sbrk成功時返回break移動之前所指向的地址,否則返回(void *)-1。

一個小技巧是,如果將increment設置為0,則可以獲得當前break的地址。

另外需要注意的是,由于Linux是按頁進行內存映射的,所以如果break被設置為沒有按頁大小對齊,則系統實際上會在最后映射一個完整的頁,從而實際已映射的內存空間比break指向的地方要大一些。但是使用break之后的地址是很危險的(盡管也許break之后確實有一小塊可用內存地址)。

2.2.4 資源限制與rlimit

系統對每一個進程所分配的資源不是無限的,包括可映射的內存空間,因此每個進程有一個rlimit表示當前進程可用的資源上限。這個限制可以通過getrlimit系統調用得到,下面代碼獲取當前進程虛擬內存空間的rlimit:

int?main() {
struct rlimit *limit?= (struct rlimit *)malloc(sizeof(struct rlimit));
getrlimit(RLIMIT_AS,?limit);
printf("soft limit: %ld, hard limit: %ld\n",?limit->rlim_cur,?limit->rlim_max);
}

其中rlimit是一個結構體:

struct rlimit {
rlim_t rlim_cur; /* Soft?limit?*/
rlim_t rlim_max; /* Hard?limit?(ceiling?for?rlim_cur) */
};

每種資源有軟限制和硬限制,并且可以通過setrlimit對rlimit進行有條件設置。其中硬限制作為軟限制的上限,非特權進程只能設置軟限制,且不能超過硬限制。

3 實現malloc

3.1 玩具實現

在正式開始討論malloc的實現前,我們可以利用上述知識實現一個簡單但幾乎沒法用于真實的玩具malloc,權當對上面知識的復習:

/* 一個玩具malloc */
#include
#include
void *malloc(size_t size)
{
void *p;
p = sbrk(0);
if?(sbrk(size) == (void *)-1)
return?NULL;
return?p;
}

這個malloc每次都在當前break的基礎上增加size所指定的字節數,并將之前break的地址返回。這個malloc由于對所分配的內存缺乏記錄,不便于內存釋放,所以無法用于真實場景。

3.2 正式實現

下面嚴肅點討論malloc的實現方案。

3.2.1 數據結構

首先我們要確定所采用的數據結構。一個簡單可行方案是將堆內存空間以塊(Block)的形式組織起來,每個塊由meta區和數據區組成,meta區記錄數據塊的元信息(數據區大小、空閑標志位、指針等等),數據區是真實分配的內存區域,并且數據區的第一個字節地址即為malloc返回的地址。

可以用如下結構體定義一個block:

typedef struct s_block *t_block;
struct s_block {
size_t size; /* 數據區大小 */
t_block next; /* 指向下個塊的指針 */
int free; /* 是否是空閑塊 */
int padding; /* 填充4字節,保證meta塊長度為8的倍數 */
char data[1] /* 這是一個虛擬字段,表示數據塊的第一個字節,長度不應計入meta */
};

由于我們只考慮64位機器,為了方便,我們在結構體最后填充一個int,使得結構體本身的長度為8的倍數,以便內存對齊。示意圖如下:

3.2.2 尋找合適的block

現在考慮如何在block鏈中查找合適的block。一般來說有兩種查找算法:

  • First fit:從頭開始,使用第一個數據區大小大于要求size的塊所謂此次分配的塊
  • Best fit:從頭開始,遍歷所有塊,使用數據區大小大于size且差值最小的塊作為此次分配的塊

兩種方法各有千秋,best fit具有較高的內存使用率(payload較高),而first fit具有更好的運行效率。這里我們采用first fit算法。

/* First fit */
t_block find_block(t_block *last, size_t size) {
t_block b = first_block;
while(b && !(b->free && b->size >= size)) {
*last = b;
b = b->next;
}
return?b;
}

find_block從frist_block開始,查找第一個符合要求的block并返回block起始地址,如果找不到這返回NULL。這里在遍歷時會更新一個叫last的指針,這個指針始終指向當前遍歷的block。這是為了如果找不到合適的block而開辟新block使用的,具體會在接下來的一節用到。

3.2.3 開辟新的block

如果現有block都不能滿足size的要求,則需要在鏈表最后開辟一個新的block。這里關鍵是如何只使用sbrk創建一個struct:

#define BLOCK_SIZE 24 /* 由于存在虛擬的data字段,sizeof不能正確計算meta長度,這里手工設置 */
?
t_block extend_heap(t_block last, size_t s) {
t_block b;
b = sbrk(0);
if(sbrk(BLOCK_SIZE + s) == (void *)-1)
return?NULL;
b->size = s;
b->next = NULL;
if(last)
last->next = b;
b->free = 0;
return?b;
}

3.2.4 分裂block

First fit有一個比較致命的缺點,就是可能會讓很小的size占據很大的一塊block,此時,為了提高payload,應該在剩余數據區足夠大的情況下,將其分裂為一個新的block,示意如下:

圖片

實現代碼:

void split_block(t_block b, size_t s) {
t_block new;
new = b->data + s;
new->size = b->size - s - BLOCK_SIZE ;
new->next = b->next;
new->free = 1;
b->size = s;
b->next = new;
}

3.2.5 malloc的實現

有了上面的代碼,我們可以利用它們整合成一個簡單但初步可用的malloc。注意首先我們要定義個block鏈表的頭first_block,初始化為NULL;另外,我們需要剩余空間至少有BLOCK_SIZE + 8才執行分裂操作。

由于我們希望malloc分配的數據區是按8字節對齊,所以在size不為8的倍數時,我們需要將size調整為大于size的最小的8的倍數:

size_t align8(size_t s) {
if(s & 0x7 == 0)
return?s;
return?((s >> 3) + 1) << 3;
}
#define BLOCK_SIZE 24
void *first_block=NULL;
?
/* other?functions... */
?
void *malloc(size_t size) {
t_block b, last;
size_t s;
/* 對齊地址 */
s = align8(size);
if(first_block) {
/* 查找合適的block */
last = first_block;
b = find_block(&last, s);
if(b) {
/* 如果可以,則分裂 */
if?((b->size - s) >= ( BLOCK_SIZE + 8))
split_block(b, s);
b->free = 0;
}?else?{
/* 沒有合適的block,開辟一個新的 */
b = extend_heap(last, s);
if(!b)
return?NULL;
}
}?else?{
b = extend_heap(NULL, s);
if(!b)
return?NULL;
first_block = b;
}
return?b->data;
}

3.2.6 calloc的實現

有了malloc,實現calloc只要兩步:

  1. malloc一段內存
  2. 將數據區內容置為0

由于我們的數據區是按8字節對齊的,所以為了提高效率,我們可以每8字節一組置0,而不是一個一個字節設置。我們可以通過新建一個size_t指針,將內存區域強制看做size_t類型來實現。

void *calloc(size_t number, size_t size) {
size_t *new;
size_t s8, i;
new = malloc(number * size);
if(new) {
s8 = align8(number * size) >> 3;
for(i = 0; i < s8; i++)
new[i] = 0;
}
return?new;
}

3.2.7 free的實現

free的實現并不像看上去那么簡單,這里我們要解決兩個關鍵問題:

  1. 如何驗證所傳入的地址是有效地址,即確實是通過malloc方式分配的數據區首地址
  2. 如何解決碎片問題

首先我們要保證傳入free的地址是有效的,這個有效包括兩方面:

  • 地址應該在之前malloc所分配的區域內,即在first_block和當前break指針范圍內
  • 這個地址確實是之前通過我們自己的malloc分配的

第一個問題比較好解決,只要進行地址比較就可以了,關鍵是第二個問題。

這里有兩種解決方案:一是在結構體內埋一個magic number字段,free之前通過相對偏移檢查特定位置的值是否為我們設置的magic number,另一種方法是在結構體內增加一個magic pointer,這個指針指向數據區的第一個字節(也就是在合法時free時傳入的地址),我們在free前檢查magic pointer是否指向參數所指地址。這里我們采用第二種方案:

首先我們在結構體中增加magic pointer(同時要修改BLOCK_SIZE):

typedef struct s_block *t_block;
struct s_block {
size_t size; /* 數據區大小 */
t_block next; /* 指向下個塊的指針 */
int free; /* 是否是空閑塊 */
int padding; /* 填充4字節,保證meta塊長度為8的倍數 */
void *ptr; /* Magic pointer,指向data */
char data[1] /* 這是一個虛擬字段,表示數據塊的第一個字節,長度不應計入meta */
};

然后我們定義檢查地址合法性的函數:

t_block get_block(void *p) {
char *tmp;
tmp = p;
return?(p = tmp -= BLOCK_SIZE);
}
?
int valid_addr(void *p) {
if(first_block) {
if(p > first_block && p < sbrk(0)) {
return?p == (get_block(p))->ptr;
}
}
return?0;
}

當多次malloc和free后,整個內存池可能會產生很多碎片block,這些block很小,經常無法使用,甚至出現許多碎片連在一起,雖然總體能滿足某此malloc要求,但是由于分割成了多個小block而無法fit,這就是碎片問題。

一個簡單的解決方式時當free某個block時,如果發現它相鄰的block也是free的,則將block和相鄰block合并。為了滿足這個實現,需要將s_block改為雙向鏈表。修改后的block結構如下:

typedef struct s_block *t_block;
struct s_block {
size_t size; /* 數據區大小 */
t_block prev; /* 指向上個塊的指針 */
t_block next; /* 指向下個塊的指針 */
int free; /* 是否是空閑塊 */
int padding; /* 填充4字節,保證meta塊長度為8的倍數 */
void *ptr; /* Magic pointer,指向data */
char data[1] /* 這是一個虛擬字段,表示數據塊的第一個字節,長度不應計入meta */
};

合并方法如下:

t_block fusion(t_block b) {
if?(b->next && b->next->free) {
b->size += BLOCK_SIZE + b->next->size;
b->next = b->next->next;
if(b->next)
b->next->prev = b;
}
return?b;
}

有了上述方法,free的實現思路就比較清晰了:首先檢查參數地址的合法性,如果不合法則不做任何事;否則,將此block的free標為1,并且在可以的情況下與后面的block進行合并。

如果當前是最后一個block,則回退break指針釋放進程內存,如果當前block是最后一個block,則回退break指針并設置first_block為NULL。實現如下:

void free(void *p) {
t_block b;
if(valid_addr(p)) {
b = get_block(p);
b->free = 1;
if(b->prev && b->prev->free)
b = fusion(b->prev);
if(b->next)
fusion(b);
else?{
if(b->prev)
b->prev->prev = NULL;
else
first_block = NULL;
brk(b);
}
}
}

3.2.8 realloc的實現

為了實現realloc,我們首先要實現一個內存復制方法。如同calloc一樣,為了效率,我們以8字節為單位進行復制:

void copy_block(t_block src, t_block dst) {
size_t *sdata, *ddata;
size_t i;
sdata = src->ptr;
ddata = dst->ptr;
for(i = 0; (i * 8) < src->size && (i * 8) < dst->size; i++)
ddata[i] = sdata[i];
}

然后我們開始實現realloc。一個簡單(但是低效)的方法是malloc一段內存,然后將數據復制過去。但是我們可以做的更高效,具體可以考慮以下幾個方面:

  • 如果當前block的數據區大于等于realloc所要求的size,則不做任何操作
  • 如果新的size變小了,考慮split
  • 如果當前block的數據區不能滿足size,但是其后繼block是free的,并且合并后可以滿足,則考慮做合并

下面是realloc的實現:

void *realloc(void *p, size_t size) {
size_t s;
t_block b, new;
void *newp;
if?(!p)
/* 根據標準庫文檔,當p傳入NULL時,相當于調用malloc */
return?malloc(size);
if(valid_addr(p)) {
s = align8(size);
b = get_block(p);
if(b->size >= s) {
if(b->size - s >= (BLOCK_SIZE + 8))
split_block(b,s);
}?else?{
/* 看是否可進行合并 */
if(b->next && b->next->free
&& (b->size + BLOCK_SIZE + b->next->size) >= s) {
fusion(b);
if(b->size - s >= (BLOCK_SIZE + 8))
split_block(b, s);
}?else?{
/* 新malloc */
newp = malloc (s);
if?(!newp)
return?NULL;
new = get_block(newp);
copy_block(b, new);
free(p);
return(newp);
}
}
return?(p);
}
return?NULL;
}

3.3 遺留問題和優化

以上是一個較為簡陋,但是初步可用的malloc實現。還有很多遺留的可能優化點,例如:

  • 同時兼容32位和64位系統
  • 在分配較大快內存時,考慮使用mmap而非sbrk,這通常更高效
  • 可以考慮維護多個鏈表而非單個,每個鏈表中的block大小均為一個范圍內,例如8字節鏈表、16字節鏈表、24-32字節鏈表等等。此時可以根據size到對應鏈表中做分配,可以有效減少碎片,并提高查詢block的速度
  • 可以考慮鏈表中只存放free的block,而不存放已分配的block,可以減少查找block的次數,提高效率

還有很多可能的優化,這里不一一贅述。下面附上一些參考文獻,有興趣的同學可以更深入研究。

4 其它參考

  1. 這篇文章大量參考了A malloc Tutorial[7],其中一些圖片和代碼直接引用了文中的內容,這里特別指出
  2. Computer Systems: A Programmer's Perspective, 2/E[8]一書有許多值得參考的地方
  3. 關于Linux的虛擬內存模型,Anatomy of a Program in Memory[9]是很好的參考資料,另外作者還有一篇How the Kernel Manages Your Memory[10]對于Linux內核中虛擬內存管理的部分有很好的講解
  4. 對于真實世界的malloc實現,可以參考glibc的實現[11]
  5. 本文寫作過程中大量參考了維基百科[12],再次感謝這個偉大的網站,并且呼吁大家在手頭允許的情況下可以適當捐助維基百科,幫助這個造福人類的系統運行下去

參考資料

[1]NP-hard:?

http://en.wikipedia.org/wiki/NP-hard

[2]MMU:?

http://en.wikipedia.org/wiki/Memory_management_unit

[3]頁表:?

http://en.wikipedia.org/wiki/Page_table

[4]TLB:?

http://en.wikipedia.org/wiki/Translation_lookaside_buffer

[5]圖片來源頁:?

http://en.wikipedia.org/wiki/Page_table

[6]Linux內核相關文檔:?

https://www.kernel.org/doc/Documentation/x86/x86_64/mm.txt

[7]A malloc Tutorial:?

http://www.inf.udec.cl/~leo/Malloc_tutorial.pdf

[8]Computer Systems:?

A Programmer's Perspective, 2/E: http://csapp.cs.cmu.edu/

[9]Anatomy of a Program in Memory:?

http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/

[10]How the Kernel Manages Your Memory:?

http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/

[11]glibc的實現:?

http://repo.or.cz/w/glibc.git/blob/HEAD:/malloc/malloc.c

[12]維基百科:?

http://www.wikipedia.org/


向下滑動查看


???????????????? ?END ????????????????

關注我的微信公眾號,回復“星球”加入知識星球,有問必答。


點擊“閱讀原文”查看知識星球詳情,歡迎點分享、收藏、點贊、在看。

李肖遙 公眾號“技術讓夢想更偉大”,作者:李肖遙,專注嵌入式,只推薦適合你的博文,干貨,技術心得,與君共勉。
評論
  • 做藍牙音箱的工程師大概都碰過這個局面。產品要連手機放歌,要本地播開機提示音和按鍵音,還要接 App 做配網和狀態上報。三件事拆開,早先的常規做法是音頻藍牙一顆料、數傳藍牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍牙、BLE 數傳和 MP3 本地播放三樣全包了。對藍牙音箱來說,最實在的好處就
    唯創知音語音芯片 2026-08-06 15:14 287瀏覽
  • 導語在現代高速數字電路設計中,信號的完整性已不僅是理想波形推演,而是一場與物理非理想特性正面博弈的工程實踐。濾波器芯片作為凈化傳輸鏈路的關鍵屏障,其核心挑戰在于:能否有效識別并濾除那些隱匿在電平跳變過程中的亞納秒級瞬態脈沖干擾,這類干擾持續極短,卻足以在高速鏈路中引發誤觸發。然而,傳統函數發生器受限于采樣率與邊沿速率,根本無法忠實復現如此狹窄且陡峭的異常波形。針對此困境,德思特TS-AWG7000系列任意波形發生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態脈沖提供精細刻畫,配合SPG
    德思特測試測量 2026-08-05 14:06 5瀏覽
  • 文:杜杰編輯:侯煜當地時間7月28日,美國特朗普政府落地最新科技封鎖政策,美國聯邦通信委員會(FCC)正式更新《受管制清單》,新增兩大類設備——境外生產的先進機器人設備、境外生產的聯網電力逆變器。FCC在官方情況說明書中明確,該類境外制造產品,“會對美國國家安全或美國民眾的人身安全構成無法承受的風險”。本次新規設置明確豁免機制:經美國國防部(DoW)、電力逆變器品類經美國國土安全部(DHS)審核并授予“有條件批準”,認定對應設備品類不存在重大安全風險,即可獲得準入豁免。同時政策嚴格執行新老劃斷原
    華爾街科技眼 2026-08-03 21:28 325瀏覽
  •     長期專注WiFi領域,也算是行業老兵了!同行閑聊中,時不時能提起我和我們!從疫情起,國產替代風生水起,起起落落,大浪淘沙,生存下來的都是強者!    WiFi模塊應用廣泛,對于高端市場和特定市場,要求WIFI模塊需要過CE/FCC之類的認證,也就是說沒有認證的模塊,不具備導入產品設計.接下來就和大家聊聊認證模塊選型參考!    WIFi模塊硬件方面主要考慮以下九點特性:    1
    納拓科技 2026-07-31 17:56 263瀏覽
  • 摘要防爆自控系統同時布設本安信號、工業總線、動力供電三類線路,僅依靠標識標牌管控插接極易出現人為錯插問題,高壓動力回路竄入本安弱電回路會突破安全柵限能標準,產生點火風險。依托 A、D、K 標準化機械防呆編碼體系,搭配護套顏色區分管理,適配 3 針 3 孔免焊接冷壓增安型防爆航插、5PIN 總線防爆航空插頭、8 芯焊接防爆法蘭插座的選型使用,從物理結構層面杜絕防爆接近開關連接器、防爆傳感器航插接頭混用插接問題,補齊防爆系統被動安全防護體系。關鍵詞圓形防爆連接器,防呆編碼防爆航插,防爆航空插頭,防爆
    kyfbest科迎法電氣 2026-07-31 18:29 407瀏覽
  • 智能寵物用品這幾年快速普及,自動清理幾乎成了智能貓砂盆的標配。貓咪用完離場,設備自動翻轉清理,養寵家庭省去了每天彎腰清理的麻煩。但自動清理的第一步,是先準確判斷貓到底在不在盆里。這個看似簡單的問題,在小空間里并不容易做好。近場檢測的痛點:距離太遠反而誤事貓砂盆內部空間有限。如果傳感器的檢測距離設得偏大,盆外路過的貓、人甚至物品都會被誤判為貓在盆內,結果該清理時不清理、不該清理時亂清理,體驗直接崩壞。這類產品的核心訴求其實就一句話:近距離、小范圍、精準識別,不能有半點誤判。常規感應方案常因檢測距離
    唯創知音語音芯片 2026-07-31 16:51 313瀏覽
  • ?摘要:低價大流量卡正全面退市,政策收緊已成定局。面對傳統號卡的不確定性,隨身WiFi憑借穩定連接、多設備共享、獨立設備和靈活套餐等優勢,成為務實可靠的備選方案。1、流量卡黃金時代要結束了通信行業正迎來一場前所未有的“地震式”調整——曾讓無數用戶追捧的低價大流量卡,正在全速退出各大平臺。這早已不是一次普通的競合,而是一場趨勢性的行業洗牌。回望過去,19元200G的神卡,那時真是“睡著都能笑醒”,便宜到不敢相信,爽到忍不住炫耀。那些日子,好像隨便刷、隨便看,流量自由觸手可及。可如今,回頭再看,那種
    愛上電路設計 2026-08-03 10:21 128877瀏覽
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩定起振的成品,要經過十幾道精密工序。它內部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個生產過程里哪怕0.1微米的誤差,都會直接廢掉整批產品,這也是小尺寸晶振過去長期依賴進口,國內廠商花了十幾年才啃下量產硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 382瀏覽
  • 在前六期中,我們已經分別討論了 CRA 的適用范圍、整體影響、漏洞通報義務、風險評估與技術文檔證據鏈、第三方組件與 SBOM 供應鏈治理,以及產品上市后的支持期、安全更新、用戶說明和終止支持管理。到這里,企業已經能夠回答幾個核心問題:產品是否落入 CRA 適用范圍,產品由哪些組件構成,企業如何證明自己在設計、開發和上市前采取了必要的安全措施,以及產品上市后如何持續維護和安全下線。但對于真正準備落地 CRA 合規的企業來說,還有一個更現實的問題:CRA 的法規條文相對原則化,企業應當如何把“網絡安
    虹科云科技 2026-08-03 16:51 159556瀏覽
  • 摘要在防爆電氣設計中,只參照芯數選型而忽略額定載流量,長期滿負荷運行會出現插頭發熱、接觸面氧化、IP67 密封受熱老化等問題。結合常用 3 針 3 孔、4 芯、5PIN、8PIN 圓形防爆連接器,制作分級電流參數對照表,區分冷壓免焊接、焊接兩種接線結構的安全載流數值,設置合理電流冗余系數,搭配使用環境修正參數,規范防爆接近開關連接器、防爆法蘭插座的選型計算方式。關鍵詞圓形防爆連接器,載流參數表,防爆法蘭插座,防爆端子接頭,IP67 防爆防水接插件1 產品概述圓形防爆連接器觸點載流能力由插針直徑、
    kyfbest科迎法電氣 2026-08-03 09:18 128644瀏覽
  • 在物聯網從“萬物互聯”邁向“萬物智聯”的進程中,LTE Cat.1憑借其在速率、成本與網絡覆蓋之間的完美平衡,正成為中低速物聯網市場的絕對主力。隨著2G/3G網絡的逐步退網以及新國標對終端設備智能化、定位功能的強制要求,Cat.1模組迎來了爆發式的增長窗口。在這一關鍵節點,基于華為海思Hi2131芯片設計的LTE Cat.1模組,憑借其在能效、射頻、架構及物理規格上的底層創新,成功打破了“高性能必高功耗”的傳統魔咒,為行業提供了極具競爭力的連接最優解。核心技術優勢:重塑Cat.1能效與連接標桿海
    用戶1778981989717 2026-08-05 21:04 169瀏覽
  • 在EMC測試過程中,傳導發射(Conducted Emission,CE)超標是工程師最常遇到的問題之一。更令人頭疼的是,同樣的超標曲線背后,可能對應著完全不同的干擾機理:有的是差模噪聲沿電源回路傳播,有的是共模電流通過寄生路徑耦合,還有些問題甚至并非來自電源本身,而是負載、電纜布局或接地結構引起的連鎖反應。 · 150kHz~1MHz 超標:多為差模噪聲為主,干擾沿火線-零線回路傳輸。 · 1MHz~30MHz 超標:通常共模噪聲占主導,干擾通過火線/零線對地回路傳播。 如果條件允許,用電流探
    譽磁電磁兼容EMC 2026-07-31 18:45 505瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 110627瀏覽
  • 產品使用18V供電,配套4串鋰離子電池,需要設計一個充電器。因為輸入18V,電池最高 16.8V,壓差僅 1.2V。因為壓差太小。使用開關型的充電控制芯片不穩定。嘗試自行設計一個。整體采用分立三極管 + TL431架構,分4個功能單元:使能控制回路、限流環路、TL431 精密恒壓反饋環路、PNP 功率管主功率輸出回路;實現完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經 R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導通,對地拉低 R1、R2 組成的分壓控制節點電位;該節點直
    southcreek 2026-08-07 13:45 328瀏覽
我要評論
0
點擊右上角,分享到朋友圈 我知道啦
請使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 侠岚第3季全集| XL司令真人版第一季全集 | 千金归来全集免费| 在菲被绑架中国人遗体疑发现| 女生规则:禁爱游戏| 车手在线观看| 二阶堂梦磁力| 漂亮人妻洗澡被强BD中文| 战狼4在线播放免费完整| 村支书电视剧| 要爸爸的种子bd| 含泪活着下载| 我的xl司令在线观看免费高清全集 | 21世纪爱情指南免费观看高清好想要| 光环夜幕| 谍杀风暴| 江姐扮演者| 河套宽频| 漂亮的保姆7免费播放| 西班牙版掌中之物| 斗罗大陆205在线观看| 木府风云主题曲净土| 电视剧铁面歌女| 白峰电影全集免费看| 咒怨电影在线完整免费观看| 图书馆女朋友在线观看完整免费版电视剧第五集 | 美国灭火宝贝2| 高清盐沼之下| 花与蛇7免费完整版全集高清| 《黑寡妇》电影| hd版泰山《激战丛林》完整版在线观看| 《绝密较量》全集| 宫心计全集在线观看| 新湘西剿匪记| 吻到停不下来| 《荣誉法则》凯登斯托雅| 落落历险记| 莫莉5特别的酒店| 《黑白潜行》在线观看 | 瓜卢达佩的玫瑰在线观看| 高清阿尔法未删减| 爆操老妈第46集完整版| 《逆袭》电视剧双男主免费观看| 新员工韩国| 六国紧急开会向朝鲜施压| 我要我们在一起电影免费完整版| 《酒店服务员》在线观看| 隐私欲望| 凯登·克劳丝-Kayden壮志凌云| 电视剧海上繁花免费观看| 伸冤人3高清电影免费观看| 温柔的寝取| 内蒙二人台光棍哭妻| 【JUL-975(中字)老公不在家5日间 身心被性豪公公彻底调教 水川堇#鬼父】https | 绝世红颜短剧全集免费观看| 《激战丛林》洛可希佛帝在线观看| 我在情人截取了一段小视频| 小沙弥欢喜看人间| 日本电影 和讨厌的部长一起出差| 女友的妈妈在线| 韩国伦理水电工| 从结婚到恋爱电视剧免费观看全集| 和部长一起出去差旅被欺负 | 离婚协议电视剧| 房产| 爱你 蓄谋已久短剧| 甜蜜的罚罪第二季| 欧美精油按摩三| 《小唐璜情史》| 威远县| 从结婚开始恋爱全集免费观看| 美国队长2 下载| omoflow第一集真人版免费观看| 三级剧情片| 日韩入室强奸,免费观看| 少林七崁| 《新入职的女员工》全集 | 房产销售电影在线观看| 鬼迷心窍 电影| 邻居也疯狂免费观看电视剧| 需要爸爸的种子伦理片在线播放| 高清《狼人游戏》歌曲原唱| 食物链美国大尺寸148| 喊麦现场| 长相思第二季免费完整版| 渔夫荒y史台湾版| 寒武纪电视剧免费全集在线观看| 战狼6免费观看在线播放完整版下载| 剑魔独孤求败全集免费观看国语 | 牙医姐妹电影在线观看| 女神探聂海芬近况| 黛恩的爱情故事在线观看| 韩剧公司下属的老婆| 速度与激情9电影免费观看 | 浴火奔腾中文| 封神英雄80| 三年大片高清在线观看全集免费观看 | 南少林三十六房| 《庆余年2》今晚开播| 阿尔卑斯山在哪| 生化危机终章在线观看| 销售的销售秘密3hd中字| 超级教师电视剧免费观看高清| 战狼9免费高清版999加拿大版 | q2002午夜我的老师| 莫妮卡《爱我几何》| 蝙蝠侠之黑暗骑士| 天狼星行动在线观看| 八戒八戒8在线看免费观看完整版| 密室大逃脱第二季第二期 | 男女一起愁愁免在线观看 | 《保姆特别待遇》| 王星越五福临门免费观看| 少帅电视剧全集下载| 卡一卡二在线入口| 文章孙兴最新电影| 小妖精好紧出轨H| 杀手无假期| 归路第二部电视剧第一集| 麦乐迪家庭矛盾| 变形金刚起源普通话| 小宝和老财电视剧全集| 《公的浮之手 电影| 鬼神童子国语版| 朴亚珍《隐身帽子》在线观看| 星落凝成糖免费观看全集巴巴影视| 速度与激情9 高清在线播放| 《销售的秘密》2| 聊斋志异之陆判徐锦江版 电影名字叫什么 | 老狼在线观看免费播放电视剧| 凹凸影视| 私人女子监狱意| 看见你的棒棒就想吃的歌手是谁 | 年轻的女朋友在线观看 | 海之声如如免费完整版动漫| 十七岁在线观看高清电视剧| 《家庭矛盾》3麦乐迪| 《莲花楼》| 一村之长电视剧| 女超人完整在线观看| 法国空姐2018不难空乘| 临洮县| 神隐电视剧在线观看全集免费播放| 儿媳与爸爸免费观看电视剧全集| 插曲的痛30集全集免费播放电影下载 | 杀死比尔2电影| 修理工绝遇中文版| 《格林童话》免费观看| 坎贝奇《无憾》播放| 祸福相依| 红顶商人胡雪岩高清| 金银梅10全集免费播放| 宸汐缘电视剧免费观看全集| 聊斋艳谭之玉女聊斋 在线观看| 嘿哥们儿| 异灵灵异 2002国语| 《荣誉守则》凯登免费观看| 我的女儿素英电视剧| 第一序列动漫免费观看全集| 阿宾在线观看| 粟裕大将| 花木兰刘亦菲在线观看免费版高清| 义姐不良妈ova观看渠道 | 娇妻趴跪着掀裙子光屁股姜罚| 开国少将邹衍逝世| 淫乱加班维修工电影| 姚二嘎吸毒| 方正县| 一千万次的泪水| 动画情侣剧烈做运动的表情包| 爱丫爱丫高清免费观看电视剧| 马来西亚小伙唱凉凉在线观看| 异形基地| 美丽人妻秘书还债社长| 用身体偿还给客户社长的妻子完整版在线观看 | 熊出没之猎鹰熊岛完整版在线观看| 小李飞刀在线观看| 《满清十大酷刑》电影完整版| 爱我几何电影完整版| 生命缘折叠人生| 向风而行电视剧免费观影| 美国禁忌满天星| 见好就收电视剧| 铁甲钢拳高清| 动感之星妖精168| 绝地反击| 大明星在线播放完整版电影| 酒店《1—60集》全集免费| 肉蒲团在线看| 人间中毒完整版求| 年轻的保险销售员2| 女佣机器人vs男招待机器人军团| 大丫鬟在线观看| 寻秦记免费完整版全集在线观看| 十七岁版在线观看免费| 娃娃脸3西班牙版| 《妻子3》免费高清电视剧在线观看| 告密者在线观看| 插曲的痛30集全集免费中文字| 妻子的校友 电影| 欢乐颂1免费观看全集电视剧完整版 | 冰雪十一天| 战火青春电视剧| 姜恩惠《特殊诊所》完整版| 五等分的新娘特别篇| 强者风范电视剧免费观看| 按摩乳房完整版电影| 斗罗大陆第210集免费观看| 满江红在线观看免费高清完整版| 《酒店激战》免费观看中文版| 极乐宝鉴电影免费观看在线播放中文| 贝尔法斯特天堂路电视剧| 保姆的特别待遇2电影| 朋友的妈妈动漫| 舞台姐妹| 《边城汉子》| 女子当众撩衣给男友喂NAI| 郝板栗《千金与佣人》| 斗罗大陆103集免费观看| 上帝之城电影高清在线观看| 盛唐风流电影免费观看完整版国语-2019| 人民的名义 李达康| 王者二弟| 言情片《邻家女人:丈夫不在的日子》HD无字免费高清在线观看完整版_tvb云播 | 我的美女姐姐欧美。 | 《有翡》在线观看免费完整版| 私人家教在线观看免费完整版| 光荣时代| jizz丝袜| 菅谷梨沙子快播| 大尺度动作片| 长汀县| 我的失语症妹妹韩剧在线播放| 高清《失窃的女孩》电视剧| 格丽乔狂飙1080p免费无敌霉运星| 在线天堂おなあちゃんなにか| 斯诺登电影| 被最想拥抱的男人威胁了动漫免费| 法国空姐5在线看免费高清满天星全集| 大夏龙帝短剧免费观看| 《水电维修工的艳遇》在线观看| 电视剧大漠枪神| 最棒的情人沼电影| 电视剧淬火年代全集免费观看| 与凤行电视剧在线观看| 问心电视剧免费观看全集在线播放| 所有邪佞之人免费完整版| 壮志凌云满天星| 年轻的母亲5完整版免费| 谢谢你爱过我全集免费观看| 八尺夫人意大利满天星| 沙坑里的女孩在线观看完整版| 人蛇大战电影全集| 麦乐迪《家庭矛盾》满天星在线播放| 杨乃武与小白菜粤语版| 小镇姑娘免费高清观看全集| 《无憾》三部曲在线看| 天就快亮了我的心却哭了| 最美的时光45| 男女愁电视剧高清在线观看| 变形金刚二| 算命少女全集免费| 《房产销售员》在线 | 不良义姐| 女和尚满天星第三季在线观看| 幻影忍者动画片| 法医王妃:验尸无敌全集免费| 《奇怪的美容院2》的完整演员表| 电影韩国太太的告白| 张学友电影全集粤语| 蓝精灵2| 长月无烬电视剧全集免费观看| 乔家大院免费观看完整版| 电视剧独狼在线观看| 喵请许愿在线观看| 红蝎子3之妖惑人心| 一路向西 torrent| 氪金玩家的3d动漫| 女大学生特殊的精油按摩| 《《特殊的房产销售2》》HD免费免费在线观看-2003年全集纪录剧 - 天美影院 | 我怎么哭了| 余罪第100集日韩版第9集剧情介绍| 三国95| 《激战丛林》完整版免费观看星辰影院| 悄悄地喜欢你免费观看| 一眉道人国语高清| 《角斗士满天星版》在线| 挚爱游戏樊治欣全集免费观看| 爱我就别想太多全集| 韩国电影禁止的爱完整版在线观看| 电锯人蕾塞篇剧场版观看| 人民的正义| 19岁免费观看国语版| 将军与妓| 我为卿 狂| 喜爱夜蒲未删减| 菠萝蜜BLM新区口| (丰满的继牳3)理伦片在线观看| 人间大炮2| 电视剧命运交响曲全集 | 甄嬛传电视剧全集完整版| 法证先锋5粤语版免费观看| 天美影院在线观看电视剧| 红娘子全集| 孙杨复出首秀| 丰县新闻| 哇嘎电影免费播放网站大全| 半是蜜糖半是伤电视剧免费观看| 恰同学少年高清| 啄木鸟满天星瓜达卢佩的玫瑰 在线观看| 创:战神| 全职法师在线观看| 《新来的瑜伽教练》| 电视剧纵横四海| 隐形的帽子在线观看免费完整版| 白发免费观看在线观看高清第三集| 林肯律师 第四季全集观看| 法国版《女超人:麦乐迪》电影在线观| 高清《未成年》电视剧免费观看 | 小泽玛利亚 bt| 我的特一营下载| 虎山行高清在线观看全集免费| 代号叫麻雀| 庄浪县| 女人公敌5| 斗罗大陆全集免费观看完整版高清| 宽城| 幸福归来全集免费观看| 电视剧蓝狐| 阿坝一家人电视剧在线观看| 白峰美羽无码播放| 爆旋陀螺粤语| 迈克尔杰克逊高清演唱会| 漂亮妈妈7巴字| 丰满的大胸女朋友2| 301勇士| 《v酒店》第二季系列| 神笔马亮在线观看喜剧| 特约外卖员| 白峰美羽主演的为父报仇| 黑帮少爷爱上我泰剧| 偷尝禁果在线观看| 情深深 雨蒙蒙| 忍不住的继拇中字3| 半路兄弟电视剧30集免费完整版| 年轻的阿姨6有限公司中字974| 高压监狱电影在线观看完整免费高清原声满天星在线 | 美国伦理片想要爸爸的种子在线看| 愛してる! 电影| 林依晨和郑元畅演过的电视剧| 原千岁电影在线观看| 十八楼c座| 首部母乳喂养法规| 《爱我几何》电影在线观看免费完整| 妻子的秘密韩国电视剧| 妈妈电影免费观看高清电视剧| 暗黑森林满天星版美国| 玩偶姐姐| 扫黑风暴连续剧| 九歌在线观看| 日本混血大学生体验按摩电影| 梨泰院class电视剧在线观看| 移动迷宫3 死亡解药| 韩国电影女主叫梅川的电影 | 激战丛林| 人犬兽人100集全部| 她很漂亮日剧| 我的非凡父母| 日本三级维修工的艳遇| 欲望爱人免费观看| 大秦帝国之纵横全集免费观看 | 高清抢钱女王团| 一夜疯狂电影高清完整版| 密挑aV| rio ed2k| 还珠格格第三部40集免费播放视频| 三个少妇按摩| 蜡笔小新第九季| 色降ii万里驱魔| 《女销售的销售秘密2》 | 帝王计划:怪兽遗产 第二季未删减| 高清今天开始是人类未删减| 法国空姐第4部完整版在线播放| 新醉打金枝优酷| 电影要爸爸播种子意大利| 电影《金悔瓶2008》演员表紫烟| 扫黑风暴28集在线观看完整版| 与凤行电视剧在线观看| 愉悦与苦痛的电影| 屈辱花嫁调教中文字幕| 《好久不见》韩剧在线观看| 播放曹操| 麦乐迪版满天星无删减观看·字数:720·| 义姐是不是良喂养樱花第2集| 爱上特种兵免费观看全集| 读百科全书的女人看在线完整| 顶楼第三季在哪看| 张警官9分11秒| 云浮市| 喜欢菊花的大小姐在线观看| 善良的嫂子韩剧| 冯德伦太极| 爱我多深没删除版| 高清怦然与你| 太极拳加长版音乐大全 | 《我的漂亮老师2》HD| 二手妻不打折| 《法国空乘5》免费播放| 上海夜莺| 血恋电影免费播放高清在线观看| 全家换着睡大结局| 刚结婚陪部长出差的日子日剧电影| 超能勇士下载| 超凡蜘蛛侠2在线观看| 美容院特殊待遇4| 分手大师 电影| 刘宇宁直播回放大全| 天可怜见国语| 隐形帽子韩国电影完整 | 姐姐真漂亮3高清在线播放| 电视剧大哥| 粉红大白菜| 沉香如屑完整版免费高清| 新藤惠美| 秦可卿原型大揭秘| 法国女超人电影完整版免费观看| 乙未豪客传奇主题曲| 面朝大海春暖花开赏析| 女版战狼免费观看三人剧情 | 爱存不存| 送醉酒同学回家完整版| 哈吉木汗| 附注我爱你下载| 《恶魔之吻》日剧免费观看| 站起来再来一次第30集剧情介绍| 《天才医生》全集观看| 儿子媳妇中字头| 叶子楣古装电影全集| 惩罚女兵洗澡影院| 临终千言| 隋唐英雄张卫健版2| 《渔夫的老婆》赛仑| 高清《东成西就》| 坏姐姐之拆婚联盟| 除暴电影在线高清观看| 公浮之手| 电锯人剧场版蕾塞篇| 解说小漠| 摩登原始人1994满天星版| 何百芮的地狱恋曲未删减| 盾牌第七季| 末日逃生2电影在线观看| 《法国空乘5》在线免费观看| 间谍过家家第8集| 望向太阳电影| 花与蛇2之牙医| 《倔强退魔师》在线观看免费高清| 交谊舞中四舞曲| 俞敏洪励志语录| 一起愁愁愁在线观看免清| 除恶电视剧| 冲上云霄2在线观看| 壮丁也是兵演员表| 裸体女医生的特殊服务电影| 和尚扒开双腿蹂躏h| 《正青春》电视剧| 法国空乘2016未删减版 | 法国空姐4在线观看| 赘婿免费观看| 妻子6免费的电视剧完整版_第6集 社长侵犯下属妻子中文版 | 九妹mv| 无憾坎贝奇| 护国良相狄仁杰| 电影《安娜和父亲》在线看麦乐迪| 年轻的母亲如如| 明星换脸免费观看方法 | 辐射第一季免费观看| 高清唐顿庄园3未删减| 国色芳华电视剧在线免费观看| 小姐电影完整版在线观看免费| 受益人 电影| 电视剧同性| 张玉贞为爱而生结局| 爱我几何电影未删减版在线观看| 就爱妹妹| 海天之恋剧情| 大江大河第一部免费完整版在线观看| 美国保罗1980二| 长空之王在线观看高清免费| 《大军阀》| 禁忌4年转一代禁忌演员表| 韩剧不得做室友第二季观看| 笑傲江湖之风云再起| 如虎添翼下一句怎么接| 性解密在线观看免费全集| 毒液:致命守护者免费完整版高清 《主妇与装修工》大结局一木百子 | 魔鬼天使高清| 龙兄虎弟电影| 阿朗的故事| 芳华解说| 黑帮老大第三季结局| 战神联盟大电影3| 夜行神龙| 我的继拇5| 随时随地都能干的小镇I| 安徽公共频道直播| 法国监狱(法国)电影观看| 善良的嫂子韩剧| 神探夏洛克电影版| 女明星的丑闻| 亮剑3gp下载| 五月槐花香免费播放| 俄罗斯美女学院第一季完整版| 她的私生活| 启航当风起时| 梦想三国在线观看全集| 二十一世纪性指南| 电影人肉腊肠| 泰剧为你着迷| 私人的女性监狱| 陶笛天空之城| 美国伦理《生殖按摩》免费观看 | 朴诗妍在电影《爱》免费播放| 关于我转生变成史莱姆这档事| 私人医院的特殊待遇2| 野花日本免费高清7| 赛仑版渔夫和他的妻子 | 奈何boss要娶我2| 《我是歌手》第三季| 瓜达卢佩玫瑰在线| 韩泼水门高管停职| 《恋爱舞台》动漫| 一树梨花压海棠完整版电影免费 | 部长出差的日子完整版| 特赦1959全集完整版在线播放| 兄弟换麦子2中字版演员表| 坏修女电影完整版在线看免费| 黑话律师第四集在线观看| 《法国空乘2016》观看| 陪讨厌部长出差旅在线观看| 国模私拍合集| 文成公主王庆爽| 唐人街探案3完整版在线观看| 和部长| 小舍得电视剧免费观看完整版| 金梅瓶下载| 栀子花开在线观看| 赫板丽| 滚滚血脉| 中国新说唱第一集| 汪汪队立大功第2季| 女超人麦乐迪满天星版英文名| 出关电视剧全集在线| 成熟的女人免费观看电视剧| 情迷姐妹| 插曲的痛第60集全集免费播放韩国 | 九重紫电视剧完整版| 新乌托邦7| 电视剧西出玉门在线观看| 最近有点怪真人电影原声| 电视剧黎明破晓前| 站着再来一次26集全集免费播放| 美容院的待遇5hd中文| 我女朋友的新妈妈双字ID免费 | 学生的妈妈4在观完整有限中字| 《孔雀舞曲》| 反转人生电影| 夫妻隔帘按摩同时绿帽免费电影 | 韩国电影诱惑| 我的好妈妈中字在线观看韩国| 电影捉迷藏| 偷换人生真假千金短剧| 美味快递在线| 浪漫玛丽国语版全集| 电视剧汗血宝马| 《天字号女子监狱》| 《天相》动漫免费观看| 高清《功夫梦:融合之道》电影| 除却巫山邓家佳片段| 摩卡精灵| 大宋少年志2结局| 让爱回来电视剧 全集| 三年在线现看免费大金三年中文| 长风渡电视剧40集免费观看高清| 上海皇帝之岁月风云| 碧血剑 电视剧| 《战狼6免费观看》日韩| 蜜桃成熟时33d西西| 四平青年之喋血曼谷免费观看完整| 我们的歌伴奏| 销售的秘密在线观看| 东京少年| 顶级生活| 杜拉拉升职记 电影| 海口市| 《Overflower》动漫第一季真人| 心跳恋爱电视剧免费观看| 小sao货几天没c水就这么多| 快乐到死电影在线观看| 维修师傅的艳遇韩国理论片在线观看 | 两个小婕子和我做愛| 法国空乘1980版未删减版下载| 折腰电视剧免费观看| 黑帮大佬和我的365五天| 北大教授王福重| 《法国空乘11》成人版| 策驰影视2022| 爱的罗曼史| 环太平洋 电影天堂| 神木丽急诊待遇2电影完整版| 插曲的痛120集在线观看免费下载| 令人心动的offer3| 神医毒妃白鹤染| 拍的不错| 《急诊护士》法国版电影在线播放完| 咱们结婚吧 25| 团鬼六:绳责| 杜拉拉之似水年华歌曲| 麦乐迪的女超人在线观看完整免费| 曹查理威胁财务女是什么电影| honeygirl| 华晨宇打响内娱反黄牛第一枪 | 姚芊羽电视剧大全| 旋转的爱中文版| 《雁回时》在线观看| HR版女版壮志凌云2010| 电影《特殊游泳课》完整版| 菠萝蜜新区口| 华丽的外出全集| 黑客帝国2| 女侓师的堕落在线观看| 我和黑帮老大的第365日| 《下女》| 百慕大三角 美剧| 让儿媳妇变成花痴第二季剧情简介| gogo高清在线| 精忠岳飞电视剧全集40| 漂亮的姨母5韩国| 菲律宾电影《兽行》的剧情简介| 铜锣铜钹铿锵锵锵在线观看2023年 | 加勒比海盗3电影| 《尸城》| 《家属》1~6集全集在线观看| 大锅饭养懒汉| 朋友的姐姐 720p| 古船女人和网全集| 女子监狱国语| 男女生一起愁愁愁电影在线观看| 《第一次亲密接触》韩剧| 地牢女孩在线观看完整版高清| 《武神主宰》电视剧| 爸爸的种子在线观看| 我们的歌第五季| 她的初恋| 无尽动漫在线观看完整版| 真理与背叛| 巨茎挺进李淑芬的体| 老狼在线观看免费播放电视剧| 棺姬嘉依卡| 准备好了没2:我来了全集观看| 五通神魔大战三只狐妖| 普罗米修斯高清| 油罐车注水后运往外省销售| 麦乐迪《忠诚少女》| 记忆的静物免费观看完整版 | 《金牌销售》法国| 房奴试爱电视剧第一集开头 | 张新伟遗书| 全球多地现黄金大盗| 美国特别酒店2免费| 15YC电影院| 电影生化危机5| 驱魔天师| 临时劫案高清在线| 4个混血大学精神按摩视频| 艾曼妞3:爱的课程| 《甄嬛传》免费看| 亚伯风尘| 凤归巢短剧全集免费观看完整版| 女版战狼6免费播放国语版| 三妹在线观看免费完整版| 名侦探柯南日语版免费观看| 无忧渡40集全免费播放电视剧| 妈妈的职业2观看全集免费高清在线 | 台剧浪漫女家教免费观看第14集| 有你才幸福全集| 蒙娜丽莎走下楼梯| 单身插班生| aj电视剧免费观看全集完整版承磊| 迪迦奥特曼7| 运钞大劫案电影免费观看国语| 电影《牙医姐妹》1986年在线| 电影《暴君》在线观看| 说爱你蔡依林| 修理工调教老板娘电影| 青面修罗电影高清在线观看免费 | 战狠6电影免费观看高清版| 韩剧big| 50岁阿姨大人免费观看电视剧全集高清完整版 | 《权力王朝:默多克家族》| 韩国电视剧漂亮女孩| 《淘气的女孩也需要爱》| 电影《法国空少》免费观看| 电影杜鹃山| 高清《百万人推理》电视剧| 我的妹妹不可能那么可爱第一季| 韩国美发店的特别待遇2| 《以法之名》全集1_36| 天地传说之宝莲灯2001林志颖| 三年大全国语版免费观看| 张帝最新演唱会下载| 聊斋之奇情异恋| 高清非常检控观未删减| 韓國母親三| 御前四宝高清下载| 三年在线观看免费大全一集| 酒店1—5免费| 琴书罗成算卦| 极限挑战 直播| 山岸逢花在线观看| 牙医姐妹在线观看 赤子板栗| 少林足球国语高清| 私じゃなかったんだね谐音| 潮与虎动漫| 《部长出差的日子》电影中文字幕| 雅的拼音| 暮光之城1小说下载| 和大胸大乳继拇做爰5| 暗夜完整版在线观看| 甄嬛传43集| 权志龙无限挑战2013| 酒店1-80集| 四川绵阳村民种中药材致富| 电视剧天龙八部| 男女在一起愁愁愁插曲免费观看全集 | 无憾在线观看坎贝奇| 笨蛋测验召唤兽第一季| 村里来了个洋媳妇免费观看全集| 涩涩屋| 年轻时的妈妈| 神偷奶爸1国语版免费完整版| 舞乐传奇演员表| 美国禁忌睫毛膏10| 重生八零:俏媳妇致富经全集免费 | 机甲武士剑| 《混血儿的摇篮曲》1973| 罪恶斗争电影在线播放| 黄骗免费网站| 威远县| 禁止的爱善良的小姨子免费观看| 《外出2》精彩片段| 热血传奇补丁| 妻子成为临时模特的日本电影| 妈妈爱上儿子同学在线| 我是特种兵之火凤凰36| 满天星《女超人》免费播放| 亲爱的热爱的免费看| 帝王计划:怪兽遗产 第二季未删减| 我的灿烂人生韩剧| 甲午风云电影| https://www.shyongshi.com/movi/rweof.html | 朋友的闺蜜id中字| 参加北京冬奥会元首| 韩剧我的妈妈| 运钞大劫案免费观看| 大夏傻神之逆袭| 《西部通缉令》| 源代码在线观看| 爸爸的种子高清免费版电视剧需要爸 | 公之浮之9| 绝地枪王| 电影失眠| 熊出没免费全集观看| 大牛影库战狼6在线观看| 电影壮志凌云| 秘密列车在线全集免费观看| 桃色胸器| 大风杀电影在线观看完整版| 绝对权力剧情| 男生和女生一起愁愁愁电视剧全集双| 十大满清酷刑2| 刘墉下南京豫剧| 深州市| 李多海资料| 杨贵妃传| 变节粤语高清| 插曲的痛60全集免费观看高清版校园青春 | 邵氏《金莲外传》2| 凪光K罩杯电车模特经理电影| 法式鹅肝为什么那么大| 路亚发烧友| 高潮电影免费观看中| 美食天王| 兰州老肥熟全程露脸| 色降无码| 红高粱高清下载| 寒武纪电视剧| 木下檀子的电影免费观看国语完整版| 男子不用洗发水从秃顶到满头黑发| 满天星《乌托邦》欧美| 辣妈正传快播| 西班牙最亲密的兄妹电视剧| 水手服饲养1小时40分钟视频 | 无憾电影坎贝奇全集免费观看中文 | 现在是和相爱的人一起生活吗| 致命诱惑电影| 《女超人满天星版》麦乐迪完整版 | 奔驰女车主违约| 年轻女教师3在线观看| 黑人大鸡巴干俄罗斯美女彩蝶视频 | 男按摩中字在线播放| 斗罗大陆免费完整观看207| 韩剧《蓝色生死恋》高清在线观看| 红蓝3d| 烈火英雄电影| 冲上云霄2 电视剧| 法国空姐4(多塞尔航空)完整版免费中文 | 《漂白》电视剧在线播放| 善良的儿媳妇在线播放| 和讨厌的部长出差日本电影| 淄博电视台| 骊歌行电视剧免费观看| 爸爸要你的种子| 一个人在黑夜里寻找散文诗宋湘波| 聊斋iii| 《瓜达卢佩的玫瑰》免费观看| 十七岁韩剧高清免费| 月光王子| 冬至电视剧黄景瑜孙千免费观看| 哪吒1高清完整版免费观看| 真情玫瑰 电视剧| 鉴宝女王:古玩称霸完整版观看| 黑暗荣耀第二集3分08秒| 电影大转折| HR版女版壮志凌云观看| 百变小樱国语版| 亲爱的热爱的第二季| 《恋雪纪》完整版免费看| 军刺电视剧全集在线观看| 我需要爸爸的种子在线观看| 幸福媳妇成长记结局| 吉尔莫女孩第二季| 《禁忌5》中文字幕| 痴情快婿国语| 南溪县| 法国监狱法版1时56| 孪生兄妹| 清华长庚医院付猛医生| 孤男寡女免费看电视剧战狼3| 花与蛇在线看| 侄女寄宿在叔叔家电视剧在线观看|