求教下函数返回值为指针的有关问题

求教下函数返回值为指针的问题
西山居的一道笔试题,给定一个接口

vector<char*>*getString(const char page[]
                        const char begin[]
                         const char end[]);

把字符串page中位于begin和end直接的串都保存起来,例如
page:abcdefghijk,begin:ab,end:jk;
截取cdefghi放到vector中。
问题1:由于要返回vector的指针,是不是要用new vector?而不能直接用vector a;
问题2:在保存cdefghi的时候是不是应该用char *str=new char[100]而不能直接用char str[100];
3:由于我要把vector传出去,则我就不能在该函数中delete掉,但我传出去的vector在外部能够被delete掉吗?我传的只是一个指针,如果我在外部用了vector<char *> s=getString(...);当我delete s的时候是不是会把我在函数new出来的vector释放掉?

  char *str=new char[100];
       str="Sender";
       char *s1=str;
       delete str;
       cout<<s1;

s1还是能输出Sender,这说明我释放的只是指针,这个时候我怎么释放掉new 出来的数组呢?
4:想问下各位前辈在什么情况下项目里会这样要求函数返回指针值?
c++函数返回值,指针

------解决方案--------------------

1 是的, 必须用new或者malloc, 返回局部变量地址很不安全的!

2 看具体需求,局部需要就不要浪费堆空间了,

3 可以delete的,只要有new出来的首地址就好!本来new出来的空间就是自己管理释放的!

4 很多情况!比如接口函数生成的一些值是接口调用完成后还需要用到有效值的,需要长期保存!
  要不从外面传一个地址进来,要不自己new空间出来填充出来的!

------解决方案--------------------
你这个设计不好。
先要考虑好,你返回的是一组指针(或者下标,用来表示在原字符串的位置),还是直接返回另外一个表示结果的字符串(相当于把结果从原串中复制出来)
如果返回指针或者下标,那么事先用个vector<char*>或者vector<int>,传递引用到函数中比较好,避免了在函数中new。
如果返回的是拷贝过来的字符串,那么直接返回string就行,string用于字符串处理比vector更合适。

------解决方案--------------------
引用:
Quote: 引用:


1 是的, 必须用new或者malloc, 返回局部变量地址很不安全的!

2 看具体需求,局部需要就不要浪费堆空间了,

3 可以delete的,只要有new出来的首地址就好!本来new出来的空间就是自己管理释放的!

4 很多情况!比如接口函数生成的一些值是接口调用完成后还需要用到有效值的,需要长期保存!