- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 cstdlib malloc() 和 free() 函数之上创建自定义内存分配器(出于性能原因)。分配器位于一个简单的类中,该类存储一些内存缓冲区和其他参数。我想将释放内存的方法命名为 free(),但是我仍然需要能够在类中使用 cstdlib 的 free()。
#include <cstdlib>
inline void cstdlib_free(void * M){ free(M); } // Works, but is ugly!
class MyAllocator{
/* ... */
// Does internal class operations; Does NOT use stdlib's free
free(void * _Memory){ /* ... */ }
// Frees buffers to system memory; USES stdlib's free
clear(void){
/* ... */
cstdlib_free(Buff); // THIS is what I want to change
/* ... */
}
};
目前,我通过为 cstdlib 的 free() 创建一个包装器来解决这个问题,但我不禁认为必须有更好的解决方案(我也不想重命名该类的 free() 方法,因为我希望名称保持一致)。我希望按照 this question 的第一个答案找到解决方案。 ,即使用cstdlib的基类访问free()。
C++ 是否提供任何方法来访问作为类结构的标准 C 函数?有什么方法可以告诉编译器我想直接在类声明下使用范围(而不是它的父类(super class),在这种情况下它甚至不存在!)?
最佳答案
是的,原文free
可访问为 std::free
在任何情况下。如果您想变得偏执,请添加另一个限定符并使用 ::std::free
.
::free
从全局命名空间中获取它,这应该是相同的功能,但是 std::
是首选。 ::free
不保证存在,除非你 #include <stdlib.h>
而不是 <cstdlib>
.
关于c++ - 在仍然使用 cstdlib free 的同时在类中定义自定义 free(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15014889/
我正在将 cpp 文件从 Windows 8 64 位机器交叉编译到 ARM-Cortex M。一切正常,但当我需要 stdlib 时,它会给我以下错误: C:\Program Files (x86)
这是一个家庭作业问题,但它只是一个更大项目的一小部分。限制之一是我们不得以任何理由使用 STL。 我尝试使用 ctime 和递增修饰符来汇总我自己的 rand() 函数。我认为即使这没有一致的种子,该
找不到问题的确切答案: 释放内存并再次分配是不使用 cstdlib 重新分配内存的唯一方法吗?如果不是,那么可能的解决方案是什么? 提前致谢。 最佳答案 如果您正在实现自己的 vector 类,那么您
我在我的 Objective C 测试项目中集成了 SpiderMonkey 库。在 main.mm(对于 C++,我将其重命名为 .mm)中,我导入了文件 #include "jsapi.h" 编译
所以我一直在尝试开始编程,并且一直在学习我找到的教程。我已经多次检查我的输入并不断收到相同的错误“未定义对'WinMain@16'的引用”因为我是新手我不理解我在网上找到的任何解释。 请帮忙 #inc
我有一个正常情况下编译良好的应用程序。它使用两个“非标准”函数(如果我没记错的话,都在 cstdlib 中):sleep() 和 daemon()。更新我的系统后,我发现我的程序将不再编译(它仍然可以
在几乎默认安装的 Ubuntu 11.04 上,我安装了 clang。 我正在尝试编译这个: #include int main(){ return 0; } g++ 可以很好地处理它,但是 c
我将我的系统升级到 fedora 33,之后我发现 stdlib.h 无法解析某些数据结构: In file included from /usr/include/c++/10/cstdlib:75,
我正在尝试构建我的第一个 NDK 库,但在编译时出现错误: .../cstdlib:53: error: '::clearenv' has not been declared 我不能将 C 标准库与
我正在尝试从 cstdlib 运行 qsort。功能 qsort( m_all_animals , numberOfAnimals() , sizeof(Animal*) , compare); 执行
我正在 cstdlib malloc() 和 free() 函数之上创建自定义内存分配器(出于性能原因)。分配器位于一个简单的类中,该类存储一些内存缓冲区和其他参数。我想将释放内存的方法命名为 fre
我只是改变搜索路径来通知 Xcode opencv 所在的位置。这是我的搜索路径: Framework search path: /usr/local/lib Library search path:
我正在开发一个 C++ 项目,其中包括一些来自第三方的 C 代码。我的build设置是“桌面 Qt 5.1.1 MSVC2012 64 位”,这显然是在 Windows 上使用 Qt Creator
写C++代码时有什么区别: #include 和 #include 除了前者主要包含在 std:: 命名空间中? 除了编码标准和风格之外,还有什么理由使用其中一种吗? 最佳答案 第一个是 C++
根据我正在阅读的书,rand()需要 #include 在 C++ 中 但是,我能够编译以下使用 rand() 的代码没有 #include 也不是 using namespace std;在 Vis
请告诉我为什么这段代码是用 C++11 标准编译的: #include using namespace std; int main() { abs(-12); exit(1); retu
以下代码会引发许多错误: namespace ns1 { #include ... } /usr/include/c++/4.9/cstdlib:118: error: '::d
这是我的代码: char* ToC(char src[STRING_SIZE], char* dest) { if ( src[0] == 0 ) dest = NULL;
我明白 rand() ,作为来自 的示例函数, 存在于全局和 std 中命名空间。 实际上,以下内容将编译无误,即两次调用 std::rand()和 rand()将是合法的。 #include
所以我创建了一个简单的函数来获取当前日期和时间。当我在我的 Windows 机器上的 Visual Studio 中测试它时,它工作正常。 这些是为了让我的日期时间功能起作用而包含的目录: #incl
我是一名优秀的程序员,十分优秀!