您现在的位置 > 首页>知识问答 >

c++归外野,请问如何在loop里面生成独一无二的指针

点击图片查看下一页
查看原图
更新:07-27     编辑:     来源:    
  • 各位大师,代码如下

            for (int i = 0; i < batchsize; i++) {

                    mnistToolkit.CvMatConvertToOneDimVector(vec_cvMat_train_dataset[i],vec_image);

                    float d_image[ROWM][COLM];
                    for(int m=0;m < vec_image.size();m++ ){
                            d_image[0][m] = vec_image.at(m);
                    }

                    // 只记录第一个数值的指针
                    d_batch_image[i] = &(d_image[0][0]);

                    cout << d_batch_image[i] << endl;

            }


    d_image是loop里面创建的数组,创建好后,塞满数据,然后把首个元素的指针交给上层的数组记录。
    但是打印出来的都是同一个值,如何解决?


    网友评论:

    c艹不过关啊,那个数组在栈上,每次loop完了要释放的啊

    这种情况存图片直接用个opencv的mat来存,放vector里面嘛
    没opencv的环境放话自己开内存就new一个,不过你自己得delete

    因为你这个d_image是栈变量不是堆变量,每次循环都初始化、回收,编译器用同一个地址也不奇怪。

    换用new就每次不同了

    d_image是局部变量,出了循环自动退栈了。

    地址相同也就可以理解了,栈内局部变量的内存布局在编译期就确定了。

    d_image的生命周期只到该次循环结束的时候而已,所以如果你需要保留所有的数据的话还是老老实实的把d_image放到for的外面吧。要不然就动态分配

    loop创建,本次loop结束之后就销毁了
    试试智能指针啥的?shared_ptr之类的


    原先就是mat存的,现在我需要把它转出来,因为后面的函数要收存着指针的数组的指针。

    还是重修指针吧

    楼上已经喷全了


    loop外申明呗,多难


    mnist的图片你mat读进来应该是单通道的或者3通道的uchar的吧,怎么会用float去存

    经楼上各位点播,已经可以了,谢谢。

            for (int i = 0; i < batchsize; i++) {

                    mnistToolkit.CvMatConvertToOneDimVector(vec_cvMat_train_dataset[i],vec_image);

                    float **d_image;
                    d_image = new float*[ROWM];
                    for(int a=0;a < ROWM;a++){
                            d_image[a] = new float[COLM];
                    }

                    for(int m=0;m < vec_image.size();m++ ){
                            d_image[0][m] = vec_image.at(m);
                    }

                    // 只记录第一个数值的指针
                    d_batch_image[i] = &(d_image[0][0]);

                    cout << d_batch_image[i] << endl;

            }


    转换过了。后面给cuda计算。


    这个也想试试。

    er水平还是不错的


    很热心。

    这个……注意下d_batch_image的delete

    做完后得去补补变量的生存期
        —— from Nyan来自: WindowsPhone客户端

    如果能用容器类,尽量不要new delete,即使需要new最好用share ptr

相关推荐

精彩图集

一品图片网部分图片资源收集于互联网,如果侵犯了您的版权请来信告知,我们会及时处理和回复,邮件地址:
© 2021 一品图片网 版权所有 苏ICP备150288886号 | sitemap | 图片大全