gpt4 book ai didi

c++ - 将指针转换为 int/将指针存储为类型 T

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:59 27 4
gpt4 key购买 nike

我希望计算一个指针被使用了多少次。我有一张 map :

static std::map<unsigned int, unsigned int> counters;

当我想向它插入一个新值时,我会像这样使用它:

template<class T>
MyClass::addPointer(T * tPtr){
counters[((unsigned int) tPtr)]++;
}

做这样的类型转换可以安全吗?这不是一项昂贵的手术等吗?

另外,这是确保每个指针只得到一个计数的合适方法吗?

谢谢

最佳答案

IMO,您真的不需要将其转换为 unsigned int。您可以使用 void* 获取 map:

static std::map<void*, unsigned int> counters;

空检查在这里也很重要:

template<class T>
MyClass::addPointer(T * tPtr){
if(tPtr != 0)
counters[tPtr]++;
}

休息就好。

关于c++ - 将指针转换为 int/将指针存储为类型 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com