草庐IT

c++ - 是否有一种具有 RAII + Ref 计数的语言没有不安全的指针算术?

RAII=资源获取是初始化RefCounting="穷人的GC"它们一起非常强大(就像一个引用计数的3D对象持有一个VBO,当它的析构函数被调用时它会抛出释放)。现在,问题是——除了C++之外,RAII是否存在于任何语言中?特别是不允许指针算术/缓冲区溢出的语言? 最佳答案 D有RAII,但仍然有指针算术:(但是,你真的不必使用它。请注意让D工作对我来说是一件痛苦的事,所以我只是说。 关于c++-是否有一种具有RAII+Ref计数的语言没有不安全的指针算术?,我们在StackOverfl

c++ - 是否有一种具有 RAII + Ref 计数的语言没有不安全的指针算术?

RAII=资源获取是初始化RefCounting="穷人的GC"它们一起非常强大(就像一个引用计数的3D对象持有一个VBO,当它的析构函数被调用时它会抛出释放)。现在,问题是——除了C++之外,RAII是否存在于任何语言中?特别是不允许指针算术/缓冲区溢出的语言? 最佳答案 D有RAII,但仍然有指针算术:(但是,你真的不必使用它。请注意让D工作对我来说是一件痛苦的事,所以我只是说。 关于c++-是否有一种具有RAII+Ref计数的语言没有不安全的指针算术?,我们在StackOverfl

c++ - CUDA:在 C++ 中包装设备内存分配

我现在开始使用CUDA,不得不承认我对CAPI有点失望。我理解选择C​​的原因,但是如果该语言是基于C++的,那么几个方面会简单得多,例如设备内存分配(通过cudaMalloc)。我的计划是自己做这个,使用重载的operatornew和放置new和RAII(两种选择)。我想知道到目前为止是否有任何我没有注意到的警告。代码似乎可以工作,但我仍然想知道潜在的内存泄漏。RAII代码的用法如下:CudaArraydevice_data(SIZE);//Use`device_data`asifitwerearawpointer.也许在这种情况下一个类是多余的(特别是因为你仍然必须使用cudaMe

c++ - CUDA:在 C++ 中包装设备内存分配

我现在开始使用CUDA,不得不承认我对CAPI有点失望。我理解选择C​​的原因,但是如果该语言是基于C++的,那么几个方面会简单得多,例如设备内存分配(通过cudaMalloc)。我的计划是自己做这个,使用重载的operatornew和放置new和RAII(两种选择)。我想知道到目前为止是否有任何我没有注意到的警告。代码似乎可以工作,但我仍然想知道潜在的内存泄漏。RAII代码的用法如下:CudaArraydevice_data(SIZE);//Use`device_data`asifitwerearawpointer.也许在这种情况下一个类是多余的(特别是因为你仍然必须使用cudaMe

c++ - 使用 RAII 从 C 风格的 API 管理资源

ResourceAcquisitionisInitialization(RAII)通常在C++中用于管理资源的生命周期,这些资源在生命周期结束时需要某种方式的清理代码,来自deleteingnewed指向释放文件句柄的指针。如何快速轻松地使用RAII来管理我从C样式API获取的资源的生命周期?在我的例子中,我想使用RAII在它释放的包含C风格资源的变量超出范围时从C风格API自动执行清理函数。除此之外,我真的不需要额外的资源包装,我想尽量减少在这里使用RAII的代码开销。有没有一种简单的方法可以使用RAII来管理来自C风格API的资源?HowtoencapsulateCapiintoR

c++ - 使用 RAII 从 C 风格的 API 管理资源

ResourceAcquisitionisInitialization(RAII)通常在C++中用于管理资源的生命周期,这些资源在生命周期结束时需要某种方式的清理代码,来自deleteingnewed指向释放文件句柄的指针。如何快速轻松地使用RAII来管理我从C样式API获取的资源的生命周期?在我的例子中,我想使用RAII在它释放的包含C风格资源的变量超出范围时从C风格API自动执行清理函数。除此之外,我真的不需要额外的资源包装,我想尽量减少在这里使用RAII的代码开销。有没有一种简单的方法可以使用RAII来管理来自C风格API的资源?HowtoencapsulateCapiintoR

c++ - 正确终止程序。使用异常

问题:如果我只想显示错误消息并关闭(考虑到我可能深入程序),使用异常是否是终止程序的正确方法?或者我可以直接调用类似exit(EXIT_FAILURE)的东西吗?我目前在做什么:我正在开发一个游戏项目,并试图找出在出现需要执行此类操作的错误时终止程序的最佳方法。例如,在无法加载纹理的情况下,我会显示一条错误消息并终止程序。我目前正在这样做,但有以下异常(exception):intmain(){Gamegame;try{game.run();}catch(BadResolutionException&e){Notification::showErrorMessage(e.what(),

c++ - 正确终止程序。使用异常

问题:如果我只想显示错误消息并关闭(考虑到我可能深入程序),使用异常是否是终止程序的正确方法?或者我可以直接调用类似exit(EXIT_FAILURE)的东西吗?我目前在做什么:我正在开发一个游戏项目,并试图找出在出现需要执行此类操作的错误时终止程序的最佳方法。例如,在无法加载纹理的情况下,我会显示一条错误消息并终止程序。我目前正在这样做,但有以下异常(exception):intmain(){Gamegame;try{game.run();}catch(BadResolutionException&e){Notification::showErrorMessage(e.what(),

c# - 是否有比嵌套 "using"更好的确定性处置模式?

在C#中,如果我想确定性地清理非托管资源,我可以使用“using”关键字。但是对于多个依赖对象,这最终会越来越嵌套:using(FileStreamfs=newFileStream("c:\file.txt",FileMode.Open)){using(BufferedStreambs=newBufferedStream(fs)){using(StreamReadersr=newStreamReader(bs)){//usesr,andhaveeverythingcleanedupwhendone.}}}在C++中,我习惯于像这样使用析构函数:{FileStreamfs("c:\fil

c# - 是否有比嵌套 "using"更好的确定性处置模式?

在C#中,如果我想确定性地清理非托管资源,我可以使用“using”关键字。但是对于多个依赖对象,这最终会越来越嵌套:using(FileStreamfs=newFileStream("c:\file.txt",FileMode.Open)){using(BufferedStreambs=newBufferedStream(fs)){using(StreamReadersr=newStreamReader(bs)){//usesr,andhaveeverythingcleanedupwhendone.}}}在C++中,我习惯于像这样使用析构函数:{FileStreamfs("c:\fil