首页 > 解决方案 > 为什么 malloc 有时在 c++ 中不起作用?

问题描述

如果我使用此代码:_valueOfSides = new T[_sideCount];而不是使用该代码:_valueOfSides = (T*)malloc(_sideCount * sizeof(T));,则代码可以正常工作。代码中的问题是什么?

代码的所有部分:

#include<iostream>
#include <cstdlib>
#include <ctime>

template<class T>
class die {
private:
    int _sideCount;
    T* _valueOfSides;
public:
    die(int sideCount, T* valueofSides) {
        _sideCount = sideCount;
        _valueOfSides = (T*)malloc(_sideCount * sizeof(T));
        //_valueOfSides = new T[_sideCount];
        for (int i = 0; i < _sideCount; i++) {
            _valueOfSides[i] = valueofSides[i];
        }
    }
    T randomResult() {
        T result;
        int range;
        srand(time(0));
        range = rand() % _sideCount;
        result = _valueOfSides[range];
        return result;
    }
};
int main() {


    int myarray1[] = { 1,2,3,4,5,6 };
    int myarray2[] = { 1,2,3,4,5,6,7,8 };
    std::string myarray3[] = { "hit","miss","miss","miss" };


    die<int> die1(6, myarray1);
    die<int>die2(8, myarray2);
    die<std::string>die3(4, myarray3);

    std::cout << die1.randomResult() << std::endl;
    std::cout << die2.randomResult() << std::endl;
    std::cout << die3.randomResult() << std::endl;
    return 0;
}

标签: c++arraysmalloc

解决方案


推荐阅读