关于布局new 操作符的问题。希望帮帮忙。谢谢

azhou88 2013-09-08 08:50:38
const int buf=512;
const int n=5;
char buff[buf];
...........
int main()
{
.........
double*pd1;
pd1=new(buff) double[n];
int i;
for(i=0; i<n;i++)
{
pd1[i]=1+2*i;
}

for(i=0;i<n;i++)
cout<<pd1[i]<<endl;.//这样子输出可以。
}

我的理解是这样子的。pd1=new(buff) double[n]在512容量的 buff[512]分配空间,也就是说数据实际上是放到了buff数组里。
可是问题是我输出数组怎么调用不出数据来。?

各位同仁,如果我理解错误,希望能简单明了的举实例的帮忙说一下。这里我卡住了。
分数不多,太穷,不是我小气。就这都是积攒了几天的分数,希望能一次解决这个问题。
在这里先谢谢了。

...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
azhou88 2013-09-09
  • 打赏
  • 举报
回复
我知道这样子可以输出,可是用数组输出呢?如果使用buff输出呢?
海的神话 2013-09-08
  • 打赏
  • 举报
回复
怎么不行呢。我这有输出啊
turing-complete 2013-09-08
  • 打赏
  • 举报
回复
placement new使用来构造对象的,不是分配空间。
zybjtu 2013-09-08
  • 打赏
  • 举报
回复
看来是高端用法哇,木有见过。编译通过了
zybjtu 2013-09-08
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <iostream>
using std::cout;
using std::endl;
#define n 5
int main()
{
    double*pd1;
    pd1=new double[n];
    int i;
    for(i=0; i<n; i++)
    {
        pd1[i]=1+2*i;
    }

    for(i=0; i<n; i++)
        cout<<pd1[i]<<endl;
    return 0;
}
不知道楼主是要干啥,new后面跟的是类型 pd1=new(buff) double[n];这个用法不对吧
taodm 2013-09-08
  • 打赏
  • 举报
回复
int buff[buf];
这样你就应该会看见点东西了。
lm_whales 2013-09-08
  • 打赏
  • 举报
回复
你这样试试:

#include<iostream>
using namespace std;
const int buf=512;
const int n=5;
char buff[buf*sizeof(double)];
int main()
{
double*pd1;
pd1=new(buff) double[n];
int i;
for(i=0; i<n;i++)
{
   pd1[i]=1+2*i;
}

for(i=0;i<n;i++)
   cout<<pd1[i]<<endl;.//这样子输出可以。

return 0;
}

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧