亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 4152 | 回復(fù): 12
打印 上一主題 下一主題

[C++] 類成員變量太大程序會(huì)down???? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-08-18 14:27 |只看該作者 |倒序?yàn)g覽
不知道C++對(duì)類成員變量的大小有沒(méi)有限制;如下程序,我在一個(gè)類里面定義了比較大的成員變量作為索引,這個(gè)索引是個(gè)數(shù)組。當(dāng)數(shù)組的空間太大的時(shí)候,程序在構(gòu)造這個(gè)類的時(shí)候就會(huì)corwdown,不知道大家有沒(méi)有見(jiàn)過(guò)這個(gè)問(wèn)題。要是有這樣問(wèn)題的話該如何解決

typedef struct
{
    time_t MaxTimeStamp;
&nbsp;&nbsp;&nbsp;&nbsp;vector<string> ThridIndex;
}SECOND_INDEX_NODE;

typedef struct
{
&nbsp;&nbsp;&nbsp;&nbsp;u_int32_t nCollisionTimes; &nbsp;&nbsp;&nbsp;&nbsp;map<string,SECOND_INDEX_NODE> SecondIndex;
}FIRST_INDEX_NODE;

class TEST
{
.................
FIRST_INDEX_NODE m_FirstIndex[100000];
.................
}


程序一開(kāi)起來(lái),運(yùn)行到構(gòu)造函數(shù)時(shí)就down了。我如果把m_FirstIndex的大小縮小10倍就沒(méi)有事,奇怪了。難道對(duì)象的成員有大小限制嗎

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
2 [報(bào)告]
發(fā)表于 2009-08-18 14:37 |只看該作者

回復(fù) #1 jiangf 的帖子

是不是聲明了一個(gè)TEST的自動(dòng)變量?

計(jì)算一下:
typedef struct
{
    time_t MaxTimeStamp;
    vector<string> ThridIndex;
}SECOND_INDEX_NODE;

這個(gè)至少應(yīng)該有12字節(jié)。

class TEST
{
.................
FIRST_INDEX_NODE m_FirstIndex[100000];
.................
};
這個(gè), 就至少100000×12字節(jié) = 1M多字節(jié)了。

win32下一般默認(rèn)棧大小就只有1M。

論壇徽章:
1
天蝎座
日期:2013-10-23 21:11:03
3 [報(bào)告]
發(fā)表于 2009-08-18 14:38 |只看該作者

回復(fù) #1 jiangf 的帖子

先將大小縮小10倍
然后創(chuàng)建一個(gè)對(duì)象,sizeof試試

說(shuō)句實(shí)話,你的對(duì)象也太占內(nèi)存了,還是用動(dòng)態(tài)內(nèi)存分配

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-08-18 14:41 |只看該作者

回復(fù) #1 jiangf 的帖子

同意二樓,應(yīng)該是棧大小的限制。而不是類的限制。

[ 本帖最后由 ddkkd 于 2009-8-18 14:42 編輯 ]

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-08-19 14:44 |只看該作者
我把這個(gè)成員變量改成動(dòng)態(tài)開(kāi)辟。構(gòu)造函數(shù)通過(guò)了,可是往里面插數(shù)據(jù)時(shí)就報(bào)錯(cuò)了,到
pIndex[0].mapValue.insert(make_pair(1,"Pather1"));時(shí)就報(bào)錯(cuò)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <map>
#include <vector>
using namespace std;

typedef struct
{
&nbsp;&nbsp;&nbsp;&nbsp;int nCollisionTimes;
&nbsp;&nbsp;&nbsp;&nbsp;map<int,string> mapValue;
}FIRST_INDEX_NODE;

typedef map<int,string>::iterator P_MAP;

int main()
{
&nbsp;&nbsp;&nbsp;&nbsp;FIRST_INDEX_NODE *pIndex = (FIRST_INDEX_NODE *)malloc(10*sizeof(FIRST_INDEX_NODE));
&nbsp;&nbsp;&nbsp;&nbsp;pIndex[0].mapValue.insert(make_pair(1,"Pather1"));
&nbsp;&nbsp;&nbsp;&nbsp;free(pIndex);
}

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
6 [報(bào)告]
發(fā)表于 2009-08-19 14:55 |只看該作者

回復(fù) #5 jiangf 的帖子

原帖由 jiangf 于 2009-8-19 14:44 發(fā)表
    FIRST_INDEX_NODE *pIndex = (FIRST_INDEX_NODE *)malloc(10*sizeof(FIRST_INDEX_NODE));
    pIndex[0].mapValue.insert(make_pair(1,"Pather1 "));
    free(pIndex);


大哥你是不是故意來(lái)找茬的~~~ 說(shuō)!

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2009-08-19 14:58 |只看該作者
為什么這樣說(shuō)呢,確實(shí)遇到問(wèn)題了嘛。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2009-08-19 15:00 |只看該作者
樓上的同志有什么好辦法呢解決這個(gè)問(wèn)題呢

論壇徽章:
2
青銅圣斗士
日期:2015-11-26 06:15:59數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-07-24 06:20:00
9 [報(bào)告]
發(fā)表于 2009-08-19 15:03 |只看該作者

回復(fù) #7 jiangf 的帖子

FIRST_INDEX_NODE *pIndex = new FIRST_INDEX_NODE[10];
pIndex[0].mapValue.insert(make_pair(1,"Pather1"));
delete [] pIndex;

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2009-08-19 16:52 |只看該作者
他這里用malloc 和 free 為什么不行?又不是類,按理也可以的,都是在堆上分配空間
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP