何でメモリアロケーション出来ない? – プログラミング – Home

何でメモリアロケーション出来ない?
 
通知
すべてクリア

何でメモリアロケーション出来ない?


ふじ
 ふじ
(@ふじ)
ゲスト
結合: 22年前
投稿: 16
Topic starter  

typedef struct /*HMM 型宣言及び構造体の宣言*/
{
double Re;
double Im;
}complex;

complex *data0;
complex *data1;

data0=(complex *)malloc(sizeof(xomplex)*5);
data1=(complex *)malloc(sizeof(xomplex)*5);

これで、アクセス・バイオレーション・エラー


引用解決済
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

これ'だけ'で?
確保した領域にアクセスしていないのに、アクセスバイオレーション?
# 信じられない...


返信引用
ん
 ん
(@ん)
ゲスト
結合: 23年前
投稿: 106
 

> data0=(complex *)malloc(sizeof(xomplex)*5);
> data1=(complex *)malloc(sizeof(xomplex)*5);

これの xomplex が何者なのかわかりません。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

typoでしょう。そうでなかったらコンパイルエラーのはず。


返信引用
ふじ
 ふじ
(@ふじ)
ゲスト
結合: 22年前
投稿: 16
Topic starter  

すみません。
ミスタイプでした。

data0=(complex *)malloc(sizeof(complex)*5);
data1=(complex *)malloc(sizeof(complex)*5);

でした。

それにしても、
なんで、ここでACCESS VIOLATIONが


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

#include <cstdlib>
#include <iostream>

typedef struct {
double Re;
double Im;
} complex;

int main() {
complex *data0 = 0;
complex *data1 = 0;

data0=(complex *)malloc(sizeof(complex)*5);
data1=(complex *)malloc(sizeof(complex)*5);

std::cout << (void*)data0 << std::endl;
std::cout << (void*)data1 << std::endl;

free(data0);
free(data1);

return 0;
}

--- 実行結果
00341E60
00340F60

...VC6ではなんの問題もなくコンパイル/実行できました。


返信引用
ん
 ん
(@ん)
ゲスト
結合: 23年前
投稿: 106
 

ふじさん的には、なぜ提示された個所でアクセス・バイオレーション・エラーと
判断されたんでしょう?
おそらく、何らかの根拠があるとは思うんですが。


返信引用
uni
 uni
(@uni)
ゲスト
結合: 22年前
投稿: 3
 

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200303/03030032.txt
少し前の上記スレッドで、エラー箇所を探す方法を尋ねていましたが、これでAccess
Violation
の箇所を特定したってことでしょうか?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました