炸地球 2021-06-08 23:09 采纳率: 0%
浏览 26

怎么解决.........

#include <iostream>

using namespace std;

struct index
{
	void show()
	{
		cout << "123" << endl;
	}

};

template<class T>
class A
{
public:

	//构造初始化
	A()
	{
		arr = new T[10];
	}

	void pintf()
	{
		if (0)
		{

            //这里出了问题,但是不想删除
			arr[1].show();
		}
		else
		{
			cout << "..." << endl;
		}
		
	}

private:
	T* arr;

};

int main()
{

	A<int> a1;
	a1.pintf();


	cin.get();
}

 

  • 写回答

3条回答 默认 最新

  • 「已注销」 2023-03-17 11:38
    关注

    参考GPT和自己的思路:

    根据上面提供的代码,我们可以看到,在类模板A中定义了一个私有成员变量T* arr以及一个函数pintf(),在pintf()函数中,会判断一个条件,如果为0,会调用arr数组的第1个元素的show()函数,否则输出"..."。

    但是,我们可以看到,在构造函数中,并没有对arr指针进行动态内存分配,这就导致了在pintf()函数中,如果访问arr[1]的话,就会出现未定义行为,因为arr指针没有指向任何有效的内存空间。

    因此,为了解决这个问题,我们需要在构造函数中对arr进行动态内存分配,例如:

    A() {
        arr = new T[10];
    }
    

    或者,可以在类模板A中添加一个析构函数,在其中释放arr指针指向的内存空间,例如:

    ~A() {
        delete[] arr;
    }
    

    这样,在使用完arr指针后,可以及时将其指向的内存空间释放,避免内存泄漏问题。

    评论

报告相同问题?

悬赏问题

  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致