operator new - 为什么operator new分配具有负值的数组

时间:2013-12-13 12:56:05

标签: c++ arrays new-operator

template <class T> class Signal {

    protected: int N;                                       // length of array

    public:    T *sig;
    Signal<T>  fft();
    }

    template <class T> Signal<T> Signal<T>::fft() {


        if (N==1) return *this;
        if (N%2!=0) 
            cout<<"N is not power of 2";

        else{

            Signal<T> even;
            even.sig=new T[N/2];
            Signal<T> odd;
            Signal<T> esig;
            Signal<T> osig;
            Signal<T> y;
            y.sig=new T[N];

            for (int i=0;i<N/2;i++) {
            even.sig[i]=sig[2*i];  /* I failed here because new operator allocate  array  with negative value*/
            }
            esig= even.fft();

            odd = even;
            for (int i=0;i<N/2;i++) {
                odd.sig[i]=sig[2*i+1];
            }
            osig= odd.fft();

        /*not importan part*/
            }
            return y;
        }

这是我班级中代表Signal的一部分。我只显示失败的方法fft的一部分。

我得到错误Invalide分配大小4294967295在我放评论的行。当我调试时,我得到了even.sig的值为0x0062b9f8 {-842150451}。 我怎样才能解决这个问题,得到的数据不是负数。

0 个答案:

没有答案