2012-12-05 123 views

回答

2

您不能以便攜方式在C中執行此操作。它可能不會存儲在任何地方; malloc()可能會預留比您要求的區域大得多的區域,並且不保證存儲您請求的多少信息。

你要麼需要使用標準尺寸,如malloc(ARRAY_LEN * sizeof(int))malloc(sizeof mystruct),或者你需要與圍繞指針傳遞信息:

struct integers { 
    size_t count; 
    int *p; 
}; 

void fun(integers ints) { 
    // use ints.count to find out how many items we have 
} 

int main() { 
    struct integers ints; 
    ints.count = 10; 
    ints.p = malloc(ints.count * sizeof(int)); 
    fun(ints); 
} 
0

沒有內在的邏輯來找到分配的內存指針。 你必須執行你自己的方法來做到這一點,就像他在答案中提到的布萊恩一樣。

是的,你可以找到在linux上使用valgrind等工具泄漏的內存。 ,在solaris上有一個庫libumem.so,它有一個叫做findleaks的函數,它會告訴你在進程處於運行狀態時有多少內存被泄漏。