c++ 指针引用的传递,等等 qt -std=c++0x

本文介绍 C++ 中使用模板实现指针引用传递的方法,并解释如何正确释放不同类型的内存分配,包括基本数据类型及对象数组的内存管理。

c++指针引用的传递 必须用模板实现

template <class T>
void ChangeSize1D(T * &a,int size,int ToSize){
    T *b = new int[ToSize];
    for(int i=0;i<ToSize&&i<size;i++){
        b[i] = a[i];
    }
    delete[] a;
    a = b ;
}

否则运行会报错。

Qt用c++新标准 在pro里添加QMAKE_CXXFLAGS += -std=c++0x 就可以了

int a[4];  sizeof(a)  等于16  是数组a的字节数

int *a = new int(4); sizeof(a) 等于4是一个int指针的字节数

1.在释放堆栈中c++基本数据(包括int,char.....结构体等)的存储空间时,不管是否是数组用delete都不会有错!而且能正常释放所有内存,不会导致内存泄露!

2.对象数组不能用delete,只能用delete[];

++ -c -include .pch/Qt5Core -pipe -O3 -std=c++11 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -Wno-format-overflow -D_REENTRANT -fPIC -DQT_NO_LINKED_LIST -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DELF_INTERPRETER=\"/lib/ld-linux-aarch64.so.1\" -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DPCRE2_CODE_UNIT_WIDTH=16 -I. -Iglobal -I../3rdparty/md5 -I../3rdparty/md4 -I../3rdparty/sha3 -I../3rdparty -I../3rdparty/double-conversion/include -I../3rdparty/harfbuzz/src -I../3rdparty/forkfd -I../3rdparty/tinycbor/src -I.rcc -I../../include -I../../include/QtCore -I../../include/QtCore/5.15.17 -I../../include/QtCore/5.15.17/QtCore -I.moc -I.tracegen -I../3rdparty/pcre2/src -I../../mkspecs/linux-g++ -o .obj/qabstractitemmodel.o itemmodels/qabstractitemmodel.cpp itemmodels/qabstractitemmodel.cpp: In member function ‘bool QPersistentModelIndex::operator<(const QPersistentModelIndex&) const’: itemmodels/qabstractitemmodel.cpp:218:22: error: wrong number of template arguments (0, should be 1) 218 | return std::less<>{}(d, other.d); | ^ In file included from /usr/include/c++/13/string:49, from ../../include/QtCore/../../src/corelib/text/qbytearray.h:52, from ../../include/QtCore/qbytearray.h:1, from ../../include/QtCore/../../src/corelib/text/qstring.h:50, from ../../include/QtCore/qstring.h:1, from ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:44, from ../../include/QtCore/qcoreapplication.h:1, from global/qt_pch.h:66: /usr/include/c++/13/bits/stl_function.h:403:12: note: provided for ‘template<class _Tp> struct std::less’ 403 | struct less : public binary_function<_Tp, _Tp, bool> | ^~~~ make[3]: *** [Makefile:41096:.obj/qabstractitemmodel.o] 错误 1 make[3]: *** 正在等待未完成的任务.... make[3]: 离开目录“/opt/qt-everywhere-src-5.15.17/qtbase/src/corelib” make[2]: *** [Makefile:202:sub-corelib-make_first] 错误 2 make[2]: 离开目录“/opt/qt-everywhere-src-5.15.17/qtbase/src” make[1]: *** [Makefile:51:sub-src-make_first] 错误 2 make[1]: 离开目录“/opt/qt-everywhere-src-5.15.17/qtbase” make: *** [Makefile:85:module-qtbase] 错误 2
最新发布
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值