如果我在使用 API的流程中enumerate heaps,是否有办法告诉哪些模块是由哪些模块创建的?
这就是为什么我需要这个:对于GetProcessHeaps,我需要purpose of my security application我的进程使用(即Windows公共控件使用的内存,通过#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
class ts_stack {
public:
ts_stack () {
printf ("init\n");
}
~ts_stack () {
printf ("done\n");
}
};
static void cleanup (void);
static pthread_key_t key;
static pthread_once_t tls_init_flag = PTHREAD_ONCE_INIT;
void destructor(void *t) {
// thread local data structure clean up code here, which is not getting called
delete (ts_stack*) t;
}
void create_key() {
pthread_key_create(&key, destructor);
atexit(cleanup);
}
// This will be called from every thread
void set_thread_specific() {
ts_stack *ts = new ts_stack (); // Thread local data structure
pthread_once(&tls_init_flag, create_key);
pthread_setspecific(key, ts);
}
static void cleanup (void) {
pthread_exit(0); // <-- Calls destructor but sets exit status to zero as a side effect!
}
int main (int argc, char *argv[]) {
set_thread_specific();
return 3; // Attempt to exit with status of 3
}
,COM分配的任何内容,等)
我需要知道哪个模块创建了堆的原因是为了消除可以加载到我的进程中的任何与它无关的DLL。比如说,import scrabble
letters = "abcdefghijklmnoprstuvwxyz"
def has_a_double(letter):
for word in scrabble.wordlist:
if letter + letter in word:
return True
return False
for letter in letters:
if not has_a_double(letter):
print(letter + " never appears doubled")
加载到正在运行的进程中以添加它们需要的任何内容,因此我不想锁定其私有堆,如果它有一个,等等。
答案 0 :(得分:0)
如果您只关心自己的分配,那么您可以使用自己的私有堆并覆盖默认的new和delete处理程序以使用您的堆。