我想知道是否存在删除指针的模式。更具体地说,当您需要为数据调用某种中间函数时。下面是我所想的一个例子:
int main() {
// some code here
char* return_of_function1 = function1(int_array);
int return_of_function2 = function2(return_of_function1);
delete[] return_of_function1;
// some code here
}
char* function1(int* int_array) {
// some code here
}
int function2(char* char_array) {
// some code here
}
int main() {
// some code here
int return_of_function2 = function2(int_array);
// some code here
}
char* function1(int* int_array) {
// some code here
}
int function2(int* int_array) {
// some code here
return function2(function1(int_array), true);
}
int function2(char* char_array, bool delete_array) {
// some code here
if(delete_array) {
delete[] char_array;
}
return /* return value */;
}
其目的是避免对集合属性的数据进行中间调用。再一次,我只是想问一下这是不是常用的,或者一开始是不是一个好主意。
非常感谢。
通常的做法是以您正在使用的方式远离原始指针。如果您的char*确实是一个字符串,那么请使用std::string(例如)。
RAII代表资源获取即初始化。对此重要的是,您用一个对象包装您的资源,并且您让对象超出范围。它会因为超出范围而被破坏,而析构函数是您唯一需要担心破坏数据的地方。如果您真的要使用char*而它实际上不是字符串,因此您应该使用string,它可能如下所示:
class CharArray {
public:
CharArray(whatever args you need);
virtual ~CharArray() { if (ptr) delete[] ptr; }
private:
char * ptr = nullptr;
};
如果CharArray的任何方法实际上可以更改ptr,那么您需要确保首先小心地释放旧的内容。
您还需要确保您有完整的move构造函数/运算符等,这样您就可以安全地返回这些。
另一个选择是智能指针。请参阅std::shared_ptr
和std::unique_ptr
。这些家伙很棒。他们为你处理这一切,有引用计数。
问题内容: 我是Java菜鸟。我已经掌握了将C / C ++指针转换为Java引用的概念,并且进展相当顺利。 我打了一段有指针的代码(即* ptr)。我需要取消引用指针并更改其指向的指针的值(即 ptr =&newthing;) 在Java中这似乎要困难得多。是否有人对如何解决此问题有任何想法?快速谷歌搜索什么都没有。 这是C ++中的代码示例。我想在Java中获得类似的工作,但是ptr_to_p
学习 C++ 的指针既简单又有趣。通过指针,可以简化一些 C++ 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C++ 程序员,学习指针是很有必要的。 正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:#include <iostr
027. Remove Element[E] 问题 Given an array and a value, remove all instances of that value in place and return the new length. Do not allocate extra space for another array, you must do this in place wi
我在strut中得到空指针异常。我只做了一个简单的Hello world示例。当我单击时显示此错误。这是我的代码 web.xml struts.xml 操作类别: 索引.jsp 它显示索引.jsp争辩当我点击你好它显示错误。 HelloWorld.jsp
主要内容:1. 指针是什么?,2. 如何使用指针?,3. Objective-C NULL指针,4. Objective-C指针详解Objective-C中的指针简单易学。使用指针可以更轻松地执行某些Objective-C编程任务,并且在不使用指针的情况下无法执行其他任务(如动态内存分配)。 所以有必要学习指向成为一个完美的Objective-C程序员。在这小节中将通过简单的步骤学习指针。 每个变量都是一个内存位置,每个内存位置都定义了它的地址,可以使用符号()运算符进行访问,该运算符表示内存中
主要内容:this 到底是什么this 是 C++ 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。 所谓当前对象,是指正在使用的对象。例如对于 ,stu 就是当前对象,this 就指向 stu。 下面是使用 this 的一个完整示例: 运行结果: 李华的年龄是16,成绩是96.5 this 只能用在类的内部,通过 this 可以访问类的所有成员,包括 private、protec