草庐IT

unsafe-pointers

全部标签

c# - 从 C# : should I pass StringBuilder or use unsafe code? 调用非托管函数

我有一个C#程序需要将char缓冲区传递给非托管函数。我发现了两种似乎工作可靠的方法,但我不确定应该选择哪一种。这是非托管函数的签名。extern"C"__declspec(dllexport)intgetNextResponse(char*buffer);第一个选项是将缓冲区定义为StringBuilder,如下所示。//atclasslevel...[DllImport("mydll.dll")]staticexternintgetNextResponse(StringBuilderbuffer);//inmainmethodbody...StringBuildersb=newSt

c++ - C & C++ : What is the difference between pointer-to and address-of array?

C++11代码:inta[3];autob=a;//bisoftypeint*autoc=&a;//cisoftypeint(*)[1]C代码:inta[3];int*b=a;int(*c)[3]=&a;b和c的值相同。b和c有什么区别?为什么它们不是同一类型?更新:我将数组大小从1更改为3。 最佳答案 sizeof运算符的行为应该有所不同,其中之一,尤其是当您将a的声明更改为不同数量的整数时,例如inta[7]:intmain(){inta[7];autob=a;autoc=&a;std::cout对我来说,这会打印:428那是因

c# - 如果 C# 指针被认为是 "unsafe,",这是否意味着 C++ 指针也是 "unsafe"?

我正在用C#做一个项目,它可以从线性代数包中获益。我看过外面的那些,但我真的不想付钱,或者我发现它们不是很好。所以我决定自己写。我读到C++数组比C#数组快得多,但在C#中使用指针数组可以获得类似的性能,尽管它们被认为是“不安全的”。我很想知道C++指针有何不同,以及“不安全性”是否也适用于C++,或者它们是否是两个根本不同的东西。 最佳答案 C#(不安全)指针和C++(原始)指针都具有以下特征:它们允许您引用给定地址空间中的地址。它们允许您对它们执行简单的算术运算(加法和减法),涉及整数作为偏移量。它们允许您将它们指向的任何内容取

c++ - 错误 C4996 : 'ctime' : This function or variable may be unsafe

我有一个关于静态源代码分析的大型项目,除一件事外,一切都成功编译。我在标题中提供了错误消息。让我感到困惑的一点是它给出了一条错误消息,说不安全。我认为这应该只是警告,而不是错误。顺便说一句,我正在使用VisualStudio2012。这是我在ctime中遇到错误的代码部分。如果有人可以帮助我克服这个错误,我会很高兴。voidCppCheckExecutor::reportProgress(conststd::string&filename,constcharstage[],conststd::size_tvalue){(void)filename;if(!time1)return;//

c++ - C 和 C++ : Freeing PART of an allocated pointer

假设我分配了一个指针来保存4096字节。如何在C语言中释放最后1024个字节?在C++中呢?相反,如果我想取消分配第一个1024个字节,并保留其余部分(在两种语言中)怎么办?从中间释放怎么样(在我看来,这需要将它分成两个指针,在释放区域之前和之后)。 最佳答案 不要尝试猜测内存管理。它通常比你聪明;-)您唯一可以实现的是第一个场景“解除分配”最后的1Kchar*foo=malloc(4096);foo=realloc(foo,4096-1024);但是,即使在这种情况下,也不能保证“foo”会保持不变。您的整个4K可能会被释放,并且

ios - 分配 : *** error for object: Invalid pointer dequeued from free list *** set a breakpoint in malloc_error_break to debug in Magical record IOS

当我尝试使用MR_importValuesForKeysWithObject插入数据时,我的应用程序崩溃了:malloc:errorforobject0x174291c0e:Invalidpointerdequeuedfromfreelist.Setabreakpointinmalloc_error_breaktodebug.崩溃的代码是:+(NSArray*)MR_executeFetchRequest:(NSFetchRequest*)requestinContext:(NSManagedObjectContext*)context{__blockNSArray*results=n

ios - 将 "incompatible pointer types sending ' subclassA' 抑制为 'subclassB' 类型的参数 "clang

Xcode引发“不兼容的指针类型将‘subclassA’发送到‘subclassB’类型的参数”警告。用clang编译。在出现警告的情况下,我使用一个[subclassAisKindOfClass:[subclassBclass]]...确保兼容的指针使用。我想要这样的东西:#pragmaclangdiagnosticpush#pragmaclangdiagnosticignored"-Warc-performSelector-leaks"//warning-raisingcode#pragmaclangdiagnosticpop但对于提出适当的警告。IE。忽略指定诊断的clang标志

ios - 解析关系 [错误] : can't add a non-pointer to a relation (Code: 111, 版本 : 1. 7.5)

我有一个工作应用程序,可以让用户查看工作。Jobs是我的Parse后端中的一个类。我想创建一个收藏夹选项卡,用户可以在其中标记某些作业。我在我的用户类中创建了一个关系列,将其引用到我的工作类。但是,当用户点击将作业设为最爱时,我遇到了这个问题:[错误]:无法将非指针添加到关系(代码:111,版本:1.7.5)我觉得我的PFRelation编码是正确的。我研究了这个错误,但似乎找不到与我的问题相关的任何主题。我一定是在某个地方犯了错误,但是@interfaceJobDetailViewController()@end@implementationJobDetailViewControll

iphone - 如何在 Structure 中使用 __unsafe_unretained

这个问题在这里已经有了答案:ARCforbidsObjective-Cobjectsinstructsorunionsdespitemarkingthefile-fno-objc-arc(4个答案)关闭9年前。我正在将我的项目转换为ARC我在我的项目中使用结构。转换为ARC时出现错误ARCforbidsObjective-Cobjectsinstructsorunionsrk-typedefinitionforstruct我在SO中搜索,发现使用__unsafe_unretained。它将解决问题。所以我在我的结构中使用了它。typedefstructGrade{__unsafe_un

ios - Spika-iOS : "incompatible block pointer types"

我已经下载了适用于iOS和Android的“Spika”脚本,但遇到了以下问题。尝试编译时出现以下错误:Incompatibleblockpointertypessending'int(^)(ModelMessage*__strong,ModelMessage*__strong)'toparameteroftype'NSComparator'(aka'NSComparisonResult(^)(__strongid,__strongid)')我试图通过将其更改为NSComparisonResult来解决该问题,但我似乎无法理解问题所在。代码如下:NSMutableArray*remov