草庐IT

dynamic_pointer_cast

全部标签

C++代码迁移: handling uninitialized pointers

根据标题,我计划移动一些十多年前为AIX开发的遗留代码。问题是代码库很大。开发人员没有在原始代码中初始化他们的指针。现在,在将代码迁移到最新服务器时,我发现了一些问题。我知道最好的解决方案是遍历所有代码并根据需要初始化所有变量。但是,我只是想知道是否有任何其他解决方案可以解决这个问题。我试过谷歌但找不到合适的答案。 最佳答案 最具预防性的长期方法是在声明它们的位置初始化所有指针,更改代码以使用适当的智能指针来管理生命周期。如果您有任何类型的单元测试,这种重构可能相对轻松。在短期内,如果您要移植到Linux,您可以使用valgrind

C++代码迁移: handling uninitialized pointers

根据标题,我计划移动一些十多年前为AIX开发的遗留代码。问题是代码库很大。开发人员没有在原始代码中初始化他们的指针。现在,在将代码迁移到最新服务器时,我发现了一些问题。我知道最好的解决方案是遍历所有代码并根据需要初始化所有变量。但是,我只是想知道是否有任何其他解决方案可以解决这个问题。我试过谷歌但找不到合适的答案。 最佳答案 最具预防性的长期方法是在声明它们的位置初始化所有指针,更改代码以使用适当的智能指针来管理生命周期。如果您有任何类型的单元测试,这种重构可能相对轻松。在短期内,如果您要移植到Linux,您可以使用valgrind

【论文导读】- EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs(EvolveGCN:用于动态图的演化图卷积网络)

论文信息EvolveGCN:EvolvingGraphConvolutionalNetworksforDynamicGraphs原文地址:EvolveGCN:EvolvingGraphConvolutionalNetworksforDynamicGraphs:https://ojs.aaai.org/index.php/AAAI/article/view/5984/5840摘要GraphrepresentationlearningresurgesasatrendingresearchsubjectowingtothewidespreaduseofdeeplearningforEu-clidea

【论文导读】- EvolveGCN: Evolving Graph Convolutional Networks for Dynamic Graphs(EvolveGCN:用于动态图的演化图卷积网络)

论文信息EvolveGCN:EvolvingGraphConvolutionalNetworksforDynamicGraphs原文地址:EvolveGCN:EvolvingGraphConvolutionalNetworksforDynamicGraphs:https://ojs.aaai.org/index.php/AAAI/article/view/5984/5840摘要GraphrepresentationlearningresurgesasatrendingresearchsubjectowingtothewidespreaduseofdeeplearningforEu-clidea

c - asprintf() : how to free the pointers?

我有这样的代码:我分配了两次log,第一个&log是否有潜在的内存泄漏?char*log=NULL;asprintf(&log,"Hello:%s",name);if(known_person==true){asprintf(&log,"%s,%s",log,",myoldfriend.");}free(log); 最佳答案 是的,代码会泄漏,因为asprintf既不检查也不尝试重用前一个指针。因此,内存只是丢失了。避免示例中问题的最佳方法是将代码重写为char*log=NULL;if(known_person==true)aspr

c - asprintf() : how to free the pointers?

我有这样的代码:我分配了两次log,第一个&log是否有潜在的内存泄漏?char*log=NULL;asprintf(&log,"Hello:%s",name);if(known_person==true){asprintf(&log,"%s,%s",log,",myoldfriend.");}free(log); 最佳答案 是的,代码会泄漏,因为asprintf既不检查也不尝试重用前一个指针。因此,内存只是丢失了。避免示例中问题的最佳方法是将代码重写为char*log=NULL;if(known_person==true)aspr

linux - 何时在 nm 中使用 --dynamic 选项

有时当我对.so文件(例如libstdc++.so.6)执行nm时,它说没有符号,我需要使用nm--dynamic。但是对于其他一些.so文件,我可以看到没有--dynamic的符号。文档说:显示动态符号而不是普通符号。这仅对动态对象有意义,例如某些类型的共享库。但这令人困惑……什么“类型”的共享库需要--dynamic?这是如何确定的?在库的编译过程中?我以为所有共享库都是动态的(我的意思是,可以在运行时动态加载),但我的理解似乎不太正确。 最佳答案 如果您的符号没有从您的共享库中导出,它很可能最终会出现在普通符号表中,而不是动态

linux - 何时在 nm 中使用 --dynamic 选项

有时当我对.so文件(例如libstdc++.so.6)执行nm时,它说没有符号,我需要使用nm--dynamic。但是对于其他一些.so文件,我可以看到没有--dynamic的符号。文档说:显示动态符号而不是普通符号。这仅对动态对象有意义,例如某些类型的共享库。但这令人困惑……什么“类型”的共享库需要--dynamic?这是如何确定的?在库的编译过程中?我以为所有共享库都是动态的(我的意思是,可以在运行时动态加载),但我的理解似乎不太正确。 最佳答案 如果您的符号没有从您的共享库中导出,它很可能最终会出现在普通符号表中,而不是动态

linux - 如何在 "glibc detected *** free(): invalid pointer"上强制中止

在Linux环境下,当出现“glibcdetected***free():invalidpointer”错误时,如何识别是哪一行代码导致的?有没有办法强制中止?我记得有一个ENV变量来控制它?如何在gdb中为glibc错误设置断点? 最佳答案 我相信如果您将envMALLOC_CHECK_设置为2,glibc将在检测到“free():无效指针”错误时调用abort()。请注意环境变量名称中的尾部下划线。如果MALLOC_CHECK_为1,glibc将打印“free():invalidpointer”(和其他错误的类似printfs)

linux - 如何在 "glibc detected *** free(): invalid pointer"上强制中止

在Linux环境下,当出现“glibcdetected***free():invalidpointer”错误时,如何识别是哪一行代码导致的?有没有办法强制中止?我记得有一个ENV变量来控制它?如何在gdb中为glibc错误设置断点? 最佳答案 我相信如果您将envMALLOC_CHECK_设置为2,glibc将在检测到“free():无效指针”错误时调用abort()。请注意环境变量名称中的尾部下划线。如果MALLOC_CHECK_为1,glibc将打印“free():invalidpointer”(和其他错误的类似printfs)