提示コードのどこかで連続してこの関数を使ってシューティングゲームの弾をロードしてると必ずこのエラーが出るのですが参考サイトを見ると
動的に確保したメモリとありますがこの場合はでは new ですがこれが危険という場合どうすれば動的にメモリを確保すればいいのでしょうか?
アクセスエラー「 Critical error detected c0000374 」
参考サイト: https://cdecrement.blog.fc2.com/blog-entry-82.html
cpp
1#include "../Header/Texture.hpp" 2#include "../Header/Game.hpp" 3 4byte* LoadTexture(const char* str, int& width, int& height,int& channels ) 5{ 6 cv::Mat image; 7 image = cv::imread(str, cv::IMREAD_UNCHANGED); 8 9 10 //printf("image.channels: %d\n", image.channels()); // 3 11 12 if (image.empty() == true) 13 { 14 printf("image.empty()\n"); 15 return nullptr; 16 } 17 else { 18// printf("load \n"); 19 20 cv::cvtColor(image, image, cv::COLOR_BGRA2RGBA); 21 22// printf("channels: %d\n",image.channels()); //4 23 int size = image.rows * image.cols * image.channels(); 24 25 26// printf("size: %d\n", size); 27 byte* bytes = new byte[size]{ 0 }; 28 std::memcpy(bytes, (void*)image.data, (size_t)size); 29 30 // 画像サイズを取得 31 width = image.cols; // 横 32 height = image.rows; // 縦 33 34 channels = image.channels(); //チャンネル数を取得 35 36 37 return bytes; // unsigned char*を返す 38 } 39} 40
回答1件
あなたの回答
tips
プレビュー